๋ฌธ์ ์ค๋ช
:
GDScript์ ๊ฐ๋ณ ํจ์์ ๋ํ ์ง์์ ์ถ๊ฐํฉ๋๋ค.
์ด๊ฒ์ ๋๋ถ๋ถ ๊ตฌ๋ฌธ ์คํ์ด ๋ ๊ฒ์ด๋ฉฐ ๋ค์๊ณผ ๊ฐ์ด ๋ณํ๋ฉ๋๋ค.
func f(args):
for x in args:
# Do something with x
f(["these", "are", "some", "arguments"])
์์ผ๋ก:
func f(args...):
for x in args:
# Do something with x
f("these", "are", "some", "arguments")
๋ด๊ฐ ์ด๊ฒ์ ์ฌ๋ฐ๋ฅด๊ฒ ์ดํดํ๊ณ ์๊ธฐ ๋๋ฌธ์ ์ฐ๋ฆฌ๋ ruby์ splat operator ์ ๊ฐ์ ๊ฒ์ ๋งํ๊ณ ์์ต๋๊น?
์ง๋๋ฒ์ ๋ด๊ฐ gdscript์ ๋ํด ๋ฌด์ธ๊ฐ๋ฅผ ์ ์ํ์ ๋ reduz์ ์ํด ๋งค์ฐ ๋นจ๋ฆฌ ์ข ๋ฃ๋๊ณ ๊ธฐํผ๋์์ผ๋ฏ๋ก ๊ฒฝ๊ณ ๋ง ํ์ต๋๋ค(์ btw, gl์ ํฌํํ๊ณ ์์ต๋๋ค!)
@LikeLakers2 ๊ฐ๋จํ ๋ณด๋ฉด ๊ทธ๋ ์ต๋๋ค.
@girng ๊ธ์, ๊ทธ๊ฒ์ด ์ ์๋ ๊ธฐ๋ฅ์ ์ ๋ง๋ก ์์กดํ๊ธฐ๋ฅผ ๋ฐ๋๋๋ค. ์์งํ, ์ด๊ฒ์กฐ์ฐจ๋ ํ๋ ๋ฅผ ๊ฐ๋ ๊ฒ์ด ๋ ์ด ์ ์์ง๋ง ์ผ๋ฐ์ ์ธ ๊ฒฝ์ฐ๋ฅผ ์กฐ๊ธ ๋ ๋ฉ์ง๊ฒ ๋ง๋ค ๊ฒ์ ๋๋ค.
์, ๊ทธ๋ผ ์ด ์์ด๋์ด๊ฐ ์ง์ง๋ฅผ ์ป์ต๋๋ค. ๊ทธ splat ์ฐ์ฐ์๋ Ruby์์ ๋๋ฌด ์ ์ฉํฉ๋๋ค.
๊ณ ๊ธ ๋ฉํฐํ๋ ์ด์ด rpc
๊ธฐ๋ฅ์ ์ด๋ฏธ ์ด ์์
์ ์ํํฉ๋๋ค. ์ด๋ค ์ ์ผ๋ก๋ ์ก์ธ์ค ํ ์์๋ ๋ฐฉ๋ฒ์
๋๊น?
๊ฐ๋จํ ์ฌ์ฉ์ ์ ์ ๋ก๊น ๊ธฐ๋ฅ์ ๊ตฌํํ ์ ์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
์ฐ๋ฆฌ๋ ์ด๋ฏธ ๋ค์์ ์ํํ ์ ์์ต๋๋ค.
print("Score: ", score)
๊ทธ๋ฌ๋ ๋ค์๊ณผ ๊ฐ์ ์์ ๋ ์ํํ ์ ์์ผ๋ฉด ์ข์ ๊ฒ์ ๋๋ค.
_log("Score: ", score)
์ฌ๊ธฐ์ log ์ถ๋ ฅ์ ๋ค์์ ์์ฑํฉ๋๋ค.
[MyClass] Score: 500
๊ฐ๋จํ ์ฌ์ฉ์ ์ ์ ๋ก๊น ๊ธฐ๋ฅ์ ๊ตฌํํ ์ ์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
์ฐ๋ฆฌ๋ ์ด๋ฏธ ๋ค์์ ์ํํ ์ ์์ต๋๋ค.
print("Score: ", score)
๊ทธ๋ฌ๋ ๋ค์๊ณผ ๊ฐ์ ์์ ๋ ์ํํ ์ ์์ผ๋ฉด ์ข์ ๊ฒ์ ๋๋ค.
_log("Score: ", score)
์ฌ๊ธฐ์ log ์ถ๋ ฅ์ ๋ค์์ ์์ฑํฉ๋๋ค.
[MyClass] Score: 500
์ด๊ฒ์ ํ๋๋ฅผ ๋ํ ์ ์์ต๋๊น ... ๋ํ ์ธ์๊ฐ ๋ถ์พํ์ง๋ง ๋ค๋ฅธ ์ฌ๋๋ค์ด ์ข์ํ ์ ์์ผ๋ฏ๋ก Python (๋ฌธ์์ด ๋ฐ ์ซ์ ๋ฑ)๊ณผ ๊ฐ์ด ์ ์์ ์ผ๋ก ์ธ์๋๋ ์ธ์ ๊ธฐ๋ฅ์ ๋ง๋ค๊ณ ์ถ์ต๋๋ค.
๋๋ ์ด๊ฒ์ด gdscript์์ ์ ๋ง ๋ฉ์ง ๊ธฐ๋ฅ์ด ๋ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. ๋ฐฐ์ด ์์ด ์ฌ๋ฌ ์ธ์๋ฅผ ์ ๋ฌํ ์ ์๋ ๊ธฐ๋ฅ์ ์ฌ์ฉ์ ์ง์ ๋ก๊ทธ ํจ์์ ๊ฐ์ ๊ฒฝ์ฐ์ ๋งค์ฐ ์ ์ฉํฉ๋๋ค!
๊ฒ์์ ๋ง๋๋ ํ ์ด ๋ฌธ์ ๋ฅผ ํผํ ์ ์๋ค๊ณ ์ฃผ์ฅํ ์ ์์ง๋ง(๊ทธ๋ฆฌ๊ณ ๋น์ ์ด ์ ๋์ ์ผ๋ก ์ณ์ ๊ฒ์ ๋๋ค), """๋ ธ์ถ"""ํ๋ ค๋ Godot ์์ฒด์ ๋๊ตฌ ์ ์์์๊ฒ๋ ๋๋ผ์ด ์ ์ตํ ๊ธฐ๋ฅ์ด ๋ ๊ฒ์ ๋๋ค. ์ฌ์ฉ์์๊ฒ ์ ์ฐํ API๋ฅผ ์ ๊ณตํฉ๋๋ค.
๊ธฐ์ ์ ์ผ๋ก ๋ชจ๋ ๊ฒ์ด ์ด๋ค ์๋ฏธ์์ ๋ ธ์ถ๋๊ธฐ ๋๋ฌธ์ ๋ ธ์ถ์ ๋ฐ์ดํ๋ก ๋ฌถ์ฌ ์์ต๋๋ค.
์ผ๋ถ ๊ธฐ๋ฅ์ ์ด๋ฏธ varargs
์ด์ง๋ง ์ฌ์ ์ํ ๋ฐฉ๋ฒ์ด ์๊ธฐ ๋๋ฌธ์ ์ด ๊ธฐ๋ฅ์ด ์ ๋ง ํ์ํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
๋๋ gdscript์ varargs๋ฅผ ์ํฉ๋๋ค. ๊ณ ๋ คํ๋ค:
func rpc_game_info(node:Node, method:String, args:vararg):
for id in players:
node.rpc_id(id, method, args)
ํ์ฌ ๋ด๊ฐ ์๊ฐํ ์ ์๋ ์ ์ผํ ๋ฐฉ๋ฒ์ rpc_game_info
๊ฐ ํธ์ถ๋๋ ๋ชจ๋ ๊ณณ์ ๋ ์ค์ ๋ณต์ฌํ์ฌ ๋ถ์ฌ๋ฃ๊ณ ๋ฉ์๋ ์ธ์๋ฅผ ์ผํ๋ก ๊ตฌ๋ถ๋ ๋ชฉ๋ก์ผ๋ก ์ ๊ณตํ๋ ๊ฒ์
๋๋ค.
์ต์ํ ๋ฐฐ์ด์ ํ๊ฑฐ๋/ํ๋/ํ์ฅํ๋ ๋ฐฉ๋ฒ์ด ์์ต๋๊น? ์ฆ, ์ด์ ๊ฐ์ ์์ ์ ์ํํ๋ ๋ฐฉ๋ฒ์ด ์์ต๋๊น?:
func foo(bar: String, args = []):
baz(bar, ...args)
@rosshadden Object::callv("method", [..args])
์ฌ์ฉํ ์ ์์ต๋๋ค.
์ ๋ 2012๋ ๋ถํฐ ์น์ฌ์ดํธ, ๋ฐฑ์๋, ๊ฒ์์ ์ํ C/C++/Js ์ฝ๋๋ฅผ ๋ง์ด ์์ฑํด ์์ผ๋ฉฐ varargs๋ฅผ ๋ฐ๋์ ์ฌ์ฉํด์ผ ํ๋ ์ํฉ์ ๊ธฐ์ตํ ์ ์์ต๋๋ค. ๋๋ฒ๊ทธ ๋ฉ์์ง๋ฅผ ๊ธฐ๋กํ๋ ๋ฐ๋ ์ข์ ๊ธฐ๋ฅ์ด์ง๋ง ๊ทธ ์ธ์๋ ํ์ํ์ง ์์ต๋๋ค. ์ฌ์ค, ์ ๋ Godot ๊ฒ์์ ๋ง๋ ์ง 1๋ ์ด ๋์๊ณ ์ง๊ธ gdscript๊ฐ ์ด๋์ ์๋์ง ๋งค์ฐ ๋ง์กฑํฉ๋๋ค. ์ธ์ด์ ์ข ์๋ฆฌ์ ํํ๋์ ์ถ๊ฐํ๋ ๋ฐ ์๊ฐ์ ๋ณด๋ด๋ ๋์ ๊ธฐ์กด ๊ธฐ๋ฅ์ ํจ์จ์ฑ์ ๊ฐ์ ํ๋ ๋ฐ ํฌํํ๊ณ ์ถ์ต๋๋ค. ์๋ถ ์ธ์ฌ, - Alexandre Kharlamov
์ ๋ 2012๋ ๋ถํฐ ์น์ฌ์ดํธ, ๋ฐฑ์๋, ๊ฒ์์ ์ํ C/C++/Js ์ฝ๋๋ฅผ ๋ง์ด ์์ฑํด ์์ผ๋ฉฐ varargs๋ฅผ ๋ฐ๋์ ์ฌ์ฉํด์ผ ํ๋ ์ํฉ์ ๊ธฐ์ตํ ์ ์์ต๋๋ค. ๋๋ฒ๊ทธ ๋ฉ์์ง๋ฅผ ๊ธฐ๋กํ๋ ๋ฐ๋ ์ข์ ๊ธฐ๋ฅ์ด์ง๋ง ๊ทธ ์ธ์๋ ํ์ํ์ง ์์ต๋๋ค. ์ฌ์ค, ์ ๋ Godot ๊ฒ์์ ๋ง๋ ์ง 1๋ ์ด ๋์๊ณ ์ง๊ธ gdscript๊ฐ ์ด๋์ ์๋์ง ๋งค์ฐ ๋ง์กฑํฉ๋๋ค. ์ธ์ด์ ์ข ์๋ฆฌ์ ํํ๋์ ์ถ๊ฐํ๋ ๋ฐ ์๊ฐ์ ๋ณด๋ด๋ ๋์ ๊ธฐ์กด ๊ธฐ๋ฅ์ ํจ์จ์ฑ์ ๊ฐ์ ํ๋ ๋ฐ ํฌํํ๊ณ ์ถ์ต๋๋ค. ์๋ถ ์ธ์ฌ, - Alexandre Kharlamov
์ข๊ธด ํ๋ฐ, ์์๋ด์ฌ์๊ฐ ์๋ฐ์ ์ผ๋ก ์ด๋ฅผ ์ํํ ๊ฐ๋ฅ์ฑ์ด ์๋ ๊ฒฝ์ฐ ๊ทํ์ ํฌํ๊ฐ ์๋ฌด ์๋ฏธ๊ฐ ์๋ค๋ ์ ์ ์ ๊ฐ์ค๋ฝ๊ฒ ์๊ฐํฉ๋๋ค.
@mitchcurtis ๋ ผ์๋ ๋ฌธ์ ์ ๊ด๋ จ์ด ์๋ ๋๊ธ์ ์ผ๊ฐํด ์ฃผ์ญ์์ค. ๋ค๋ฅธ ์ฌ๋์ ๊ฒฝ์ํ๋ ๊ฒ์ ํ ๋ก ์ ๊ธ์ ์ ์ผ๋ก ๊ธฐ์ฌํ์ง ์์ต๋๋ค.
๋ง์ ์ฌ๋๋ค์ด "์ข ์๋ฆฌ์ ํํ๋"์ ์๊ตฌํ๋ ๊ธฐ๋ฅ์ ํธ์ถํ๋ ๊ฒ์ด ๋ค๋ฅธ ์ฌ๋์ ์์ก์ ๋ณด์ง ์๋ ๋ฐฉ๋ฒ์ ๋ฌด์์ ๋๊น? ๋ด ์๊ฒฌ์ ๋น๋ฉดํ ๋ฌธ์ ์ ์ง์ ์ ์ธ ๊ด๋ จ์ด ์์ต๋๋ค. ์ด๋ ์คํ ์์ค ํ๋ก์ ํธ์ด๋ฉฐ ๋ง์ ์ปค๋ฐ์ ์์ ํ ํญ๋ชฉ์ ์ ํํ๋ ๊ธฐ์ฌ์๋ค์ ๊ฒ์ ๋๋ค.
๋ค์ง์ด ๋ด ์๋ค. Alexandre์ ์๊ฒฌ์ด ํ ๋ก ์ ๊ธ์ ์ ์ผ๋ก ๊ธฐ์ฌํฉ๋๊น? ๋ค๋ฅธ ์ฌ๋๋ค์ด ์ํ๋ ๊ธฐ๋ฅ์ ์์ก์ ๋ณด๋ ๊ฒ๋ณด๋ค ์์ ์ด ๊ด์ฌ ์๋ ํน์ ๊ธฐ๋ฅ์ ์ฐพ์ ์ง์ํ๋ ๊ฒ์ด ๋ ์ข์ง ์์์๊น์?
๊ธฐ๋ฅ์ ๊ตฌํํ๋ ๊ฒ์ "๋๊ฐ ์ํ๋์ง"์ "๋๊ฐ ๊ตฌํํ ์ ์๋์ง"์ ๊ดํ ๊ฒ์ด ์๋๋๋ค. ๊ธฐ๋ฅ์ด ์ค์ ๋ก ํ์ํ์ง ์์ ๊ฒฝ์ฐ ๊ตฌํ์ ํผํด์ผ ํ๋ฏ๋ก "ํ์ํ์ง ์๋ค๊ณ ์๊ฐํ๋ ์ฌ๋(๋ฐ ์)"์ ์๋ ๊ฒ๋ ์ค์ํฉ๋๋ค. ์ฝ๋ ์ ์ง ๊ด๋ฆฌ๋ฅผ ๋ ์ด๋ ต๊ฒ ๋ง๋ค๊ณ ์ฑ๋ฅ์ ์ํฅ์ ๋ฏธ์น๋ฉฐ ์ต์ ํ ๊ฐ๋ฅ์ฑ ๋ฑ์ ์ค์ผ ์ ์์ต๋๋ค(ํนํ ์คํฌ๋ฆฝํ ์ธ์ด์์).
์, @alexkh ์ ํผ๋๋ฐฑ์ ๋์ํ์ง ์๋๋ผ๋ ํฅ๋ฏธ๋ก์ด ๊ฒ์ ๋๋ค. ๋๊ตฐ๊ฐ๋ ๋ด์ผ ์ด ๊ธฐ๋ฅ์ ๋ํ ์๋ฒฝํ PR์ ์ ๊ณตํ ์ ์์ต๋๋ค. ํต์ฌ ๊ธฐ์ฌ์๋ ์ฌ์ ํ ๊ธฐ์ ๋ฐ API ๋์์ธ ๊ด์ ์์ ์ด๊ฒ์ด ์ถ๊ฐํ ๊ฐ์น๊ฐ ์๋์ง ์๊ฐํ๊ณ ํ ๋ก ํ๋ ๋ฐ ์๋นํ ์๊ฐ์ ํ ์ ํด์ผ ํฉ๋๋ค.
GDScript์ ๋ฒ์๋ฅผ ์๊ณ ์ ์งํ๊ธฐ ์ฝ๊ฒ ์ ์งํ๋ ๊ฒ์ ํ์คํ ์ธ์ด์ ํต์ฌ ์ค๊ณ ์์น ์ค ํ๋์ ๋๋ค. ์ด ํน์ ๊ธฐ๋ฅ์ด ์ข์ ์ถ๊ฐ ๊ธฐ๋ฅ์ด ์๋๋ผ๋ ๋ง์ ์๋์ง๋ง, ์ ์์ ๋์ํ์ง ์๋ ์ฌ๋๋ค์ ์๊ฒฌ์ ๊ฒฝ์ฒญํ๋ ๊ฒ์ ์๋ฏธํ๋ ์ฐฌ๋ฐ ์๋ก ์ ์ ์ธ์งํด์ผ ํฉ๋๋ค.
๊ธฐ๋ฅ์ ๊ตฌํํ๋ ๊ฒ์ "๋๊ฐ ์ํ๋์ง"์ "๋๊ฐ ๊ตฌํํ ์ ์๋์ง"์ ๊ดํ ๊ฒ์ด ์๋๋๋ค. ๊ธฐ๋ฅ์ด ์ค์ ๋ก ํ์ํ์ง ์์ ๊ฒฝ์ฐ ๊ตฌํ์ ํผํด์ผ ํ๋ฏ๋ก "ํ์ํ์ง ์๋ค๊ณ ์๊ฐํ๋ ์ฌ๋(๋ฐ ์)"์ ์๋ ๊ฒ๋ ์ค์ํฉ๋๋ค. ์ฝ๋ ์ ์ง ๊ด๋ฆฌ๋ฅผ ๋ ์ด๋ ต๊ฒ ๋ง๋ค๊ณ ์ฑ๋ฅ์ ์ํฅ์ ๋ฏธ์น๋ฉฐ ์ต์ ํ ๊ฐ๋ฅ์ฑ ๋ฑ์ ์ค์ผ ์ ์์ต๋๋ค(ํนํ ์คํฌ๋ฆฝํ ์ธ์ด์์).
์, @alexkh ์ ํผ๋๋ฐฑ์ ๋์ํ์ง ์๋๋ผ๋ ํฅ๋ฏธ๋ก์ด ๊ฒ์ ๋๋ค. ๋๊ตฐ๊ฐ๋ ๋ด์ผ ์ด ๊ธฐ๋ฅ์ ๋ํ ์๋ฒฝํ PR์ ์ ๊ณตํ ์ ์์ต๋๋ค. ํต์ฌ ๊ธฐ์ฌ์๋ ์ฌ์ ํ ๊ธฐ์ ๋ฐ API ๋์์ธ ๊ด์ ์์ ์ด๊ฒ์ด ์ถ๊ฐํ ๊ฐ์น๊ฐ ์๋์ง ์๊ฐํ๊ณ ํ ๋ก ํ๋ ๋ฐ ์๋นํ ์๊ฐ์ ํ ์ ํด์ผ ํฉ๋๋ค.
GDScript์ ๋ฒ์๋ฅผ ์๊ณ ์ ์งํ๊ธฐ ์ฝ๊ฒ ์ ์งํ๋ ๊ฒ์ ํ์คํ ์ธ์ด์ ํต์ฌ ์ค๊ณ ์์น ์ค ํ๋์ ๋๋ค. ์ด ํน์ ๊ธฐ๋ฅ์ด ์ข์ ์ถ๊ฐ ๊ธฐ๋ฅ์ด ์๋๋ผ๋ ๋ง์ ์๋์ง๋ง, ์ ์์ ๋์ํ์ง ์๋ ์ฌ๋๋ค์ ์๊ฒฌ์ ๊ฒฝ์ฒญํ๋ ๊ฒ์ ์๋ฏธํ๋ ์ฐฌ๋ฐ ์๋ก ์ ์ ์ธ์งํด์ผ ํฉ๋๋ค.
๊ณต์ ํ ํฌ์ธํธ.
์ด ๋ฌธ์ ์ ๋ํ ๋ํ์๊ฐ ๊ทธ ์์ฒด๋ก ๋งํด์ฃผ๋ ๊ฒ์ด๋ผ๊ณ ์๊ฐํ์ง๋ง, ์์ผ๋ก๋ ๊ทธ๋ฐ ์ธ๊ธ์ ์ผ๊ฐ๋๋ก ๋ ธ๋ ฅํ๊ฒ ์ต๋๋ค.
์ ๋ 2012๋ ๋ถํฐ ์น์ฌ์ดํธ, ๋ฐฑ์๋, ๊ฒ์์ ์ํ C/C++/Js ์ฝ๋๋ฅผ ๋ง์ด ์์ฑํด ์์ผ๋ฉฐ varargs๋ฅผ ๋ฐ๋์ ์ฌ์ฉํด์ผ ํ๋ ์ํฉ์ ๊ธฐ์ตํ ์ ์์ต๋๋ค. ๋๋ฒ๊ทธ ๋ฉ์์ง๋ฅผ ๊ธฐ๋กํ๋ ๋ฐ๋ ์ข์ ๊ธฐ๋ฅ์ด์ง๋ง ๊ทธ ์ธ์๋ ํ์ํ์ง ์์ต๋๋ค. ์ฌ์ค, ์ ๋ Godot ๊ฒ์์ ๋ง๋ ์ง 1๋ ์ด ๋์๊ณ ์ง๊ธ gdscript๊ฐ ์ด๋์ ์๋์ง ๋งค์ฐ ๋ง์กฑํฉ๋๋ค. ์ธ์ด์ ์ข ์๋ฆฌ์ ํํ๋์ ์ถ๊ฐํ๋ ๋ฐ ์๊ฐ์ ๋ณด๋ด๋ ๋์ ๊ธฐ์กด ๊ธฐ๋ฅ์ ํจ์จ์ฑ์ ๊ฐ์ ํ๋ ๋ฐ ํฌํํ๊ณ ์ถ์ต๋๋ค. ์๋ถ ์ธ์ฌ, - Alexandre Kharlamov
์ ๋ ๋ค์ํ ๊ฒ์, ํ๋ก๊ทธ๋จ, ๊ทธ๋ฆฌ๊ณ ์ง์ฅ์์ 15๋ ์ด์ ํ๋ก๊ทธ๋๋ฐ์ ํ๊ณ ์์ต๋๋ค. ๊ทธ๋ฌ๋ Godot์์ ํ ๋ฌ ๋์๋ง ์ ๊ฐ ๋งํ ์ ์๋ ๊ฒ์, ํน์ ๊ธฐ๋ฅ ์์ฒญ์ผ๋ก ์ด๋ฏธ ์ด๋ ค ์๋ ์ฌ๋ฌ ๊ธฐ๋ฅ์ด ๊ทธ๋ฆฌ์ ๋ค๋ ๊ฒ์ ๋๋ค. ์ด ๊ธฐ๋ฅ. ๋ค์ํ ์์ ์ธ์๋ฅผ ์๋ฝํ๊ณ ๋ณด๋ผ ์ ์๋ ๊ฒ์ ๋ด๊ฐ ๊ฝค ์์ฃผ ํ์๋ก ํ๋ ๊ฒ์ด๋ฉฐ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํด์ผ ํ๋ ๊ฒฝ์ฐ ์ฝ๋์ ํ์ง์ ํฌ๊ฒ ๋จ์ด๋จ๋ฆฌ๊ณ ์์ต๋๋ค.
ํ ๊ฐ์ง ์: => ์์
class A
_init(arg0, arg1, arg2)
class B extends A
_init(arg0, arg1, arg2, arg4).(arg0, arg1, arg2)
์ด์ ํด๋์ค A์ ์ธ์ ๋ชฉ๋ก์ ๋ณ๊ฒฝํด์ผ ํ๋ค๊ณ ์์ํด ๋ณด์ญ์์ค. ์ด ํด๋์ค๋ฅผ ์์ํ๋ ๋ชจ๋ ํด๋์ค๋ฅผ ์ฐพ์์ผ ํ๋ฏ๋ก ์ํํฉ๋๋ค. ์ฌ์ค์๋ ๋ถ๊ตฌํ๊ณ ๋ช ๋ช ๋ ์ธ์๊ฐ ์์ผ๋ฏ๋ก ์ธ์ ๋ชฉ๋ก์ ํผ๋ํ๋ ๊ฒ ์์ฒด์ ๋ฌธ์ ์ ๋๋ค.
๋ ๋ค๋ฅธ ์๋ ์ฝ๋ฐฑ์ ๋๋ค. ์ด๊ฒ์ ์ฝ๋ ์์ด ์งํ๋๋ ๊ฒ ๊ฐ์ต๋๋ค ...
๊ทธ๋์ ์ ์์ ์: Godot๋ ์์ง ํ์ํ ๋ชจ๋ ๊ฒ์ ์ ๊ณตํ์ง๋ ์์ต๋๋ค. ๋จ์ง ์ค์ํ ๋ชจ๋ ๊ฒ์ ์ํํฉ๋๋ค(๋ฌผ๋ก ํจ์ฌ ๋ :) ...). ๊ทธ๋ฌ๋ ๊ธฐ๋ฅ ์ถ๊ฐ๋ฅผ ์ค๋จํ๋ ๊ฒ์ด ๊ฐ์ฅ ์ข์ ๊ฒฝ์ฐ๋ ์์ง ์๋๋๋ค. ๊ทธ๋ฌ๋ ๋ฌด์์ ์ถ๊ฐํ ์ง ์ ์คํ๊ฒ ๊ฒฐ์ ํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
ํธ์ง: ๋ฐฉ๊ธ ๋ ๋ค๋ฅธ ์ข์ ์๊ฐ godots ์์ ์ Object.call() ๋ฉ์๋์์ ๊นจ๋ฌ์์ต๋๋ค ;)
DamKoVosh, ๊ฐ์ฅ ํฐ ๊ฒ์์ด ๋ช ์ค์ ์ฝ๋์ธ์ง ์๋ ค์ฃผ์ธ์. ๊ฒ์์ ๋ง๋ค ๋๋ง๋ค ์ผ๋ง๋ ์ ์ ์ฝ๋ฉ์ด ํ์ํ์ง ์ค๋งํฉ๋๋ค. ์์ ์ ๋๋ถ๋ถ์ ํญ์ ์ฝํ ์ธ , ํ ์คํธ, ๊ฒ์ ํ๋ ์ด ๊ท ํ ์กฐ์ ์ ๋๋ค. ๋น์ ์ ๋ค์ ์ฐ๋ ๊ฒ์ด ์ํํ๋ค๊ณ ๋งํฉ๋๋ค. ๋ค๋ฅธ ๊ฒ์ด ์๋๋ผ๋ฉด ์ฝ๋๋ฅผ ๋ค์ ์์ฑํ๋ฉด ๋ฏธ๋ ์งํฅ์ ์ธ ์ธํฐํ์ด์ค์ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ๋ ์ ์์ฑํ ์ ์์ต๋๋ค!
์ด ์ค๋ ๋์ ์ฒซ ๋ฒ์งธ ๋ฉ์์ง์์ ์ธ๊ธํ๋ฏ์ด ์ ์ฒด ํ ๋ก ์ ๊ฐ๋ณ ํจ์๋ฅผ ๊ตฌํํ๋ ๋์ ๋ฐฐ์ด์ ์ฌ์ฉํ์ฌ ์ด๋ฏธ ์ฝ๊ฒ ๊ตฌํํ ์ ์๋ ๊ตฌ๋ฌธ ์คํ์ ๋ํ ๊ฒ์ ๋๋ค.
@alexkh
์ด ์ค๋ ๋์ ์ฒซ ๋ฒ์งธ ๋ฉ์์ง์์ ์ธ๊ธํ๋ฏ์ด ์ ์ฒด ํ ๋ก ์ ๊ฐ๋ณ ํจ์๋ฅผ ๊ตฌํํ๋ ๋์ ๋ฐฐ์ด์ ์ฌ์ฉํ์ฌ ์ด๋ฏธ ์ฝ๊ฒ ๊ตฌํํ ์ ์๋ ๊ตฌ๋ฌธ ์คํ์ ๋ํ ๊ฒ์ ๋๋ค.
Geequlim ์ด rpc
, emit_signal
์ ๊ฐ์ varargs๋ฅผ ์ฌ์ฉํ๋ ํจ์๋ฅผ ์ฌ์ ์ํ๋ ๊ธฐ๋ฅ์ ์ค์ ๋ก ๊นจ๋จ๋ฆฝ๋๋ค rpc
ํ์์ ๋ฐ๋ผ rpc
์ ๋ณ๊ฒฝํ๋ ค๊ณ ํ์ต๋๋ค.
์, ๊ตฌ๋ฌธ ์คํ์
๋๋ค. ๊ทธ๋ฌ๋ ๊ตฌ๋ฌธ ์คํ์ด๋ผ๋ ๊ฒ์ด ๊ทธ๊ฒ์ด ์ข๊ฑฐ๋ ๋์๋ค๋ ๊ฒ์ ์๋ฏธํ์ง๋ ์์ต๋๋ค. if
, else
์ ๊ฐ์ ์ ์ด ํ๋ฆ๊ณผ ์ฌ์ง์ด ํจ์๋ GOTO
์์ ์๋ ์คํ์ผ ๋ฟ์
๋๋ค. ๊ทธ๊ฒ ๋น์ ์ด ๊ทธ๊ฒ๋ค์ ์ํ์ง ์๋๋ค๋ ๊ฒ์ ์๋ฏธํ์ง๋ ์์ต๋๋ค.
๋๋ก๋ ์ฝ๊ฐ์ ํฉ์ฑ ์คํ์ ์ถ๊ฐํ๋ฉด ์ฝ๋๋ฅผ ๋ ์ฝ๊ธฐ ์ฝ๊ฒ ๋ง๋ค๊ณ ๋ณต์ก์ฑ์ ์ถ๊ฐํ ๊ฐ์น๊ฐ ์์ต๋๋ค.
๊ทธ๋ฌ๋ ์ค์ ๋ก๋ rpc, emit_signal๊ณผ ๊ฐ์ varargs๋ฅผ ์ฌ์ฉํ๋ ํจ์๋ฅผ ์ฌ์ ์ํ๋ ๊ธฐ๋ฅ์ ์ค๋จํฉ๋๋ค.
์ด๋ฌํ ํจ์๊ฐ ๋ฐฐ์ด์ด ์๋ varargs๋ฅผ ์ฌ์ฉํ๋ค๋ ์ ์ด ๊ถ๊ธํฉ๋๋ค. ;-) Godot API ์์ฒด๊ฐ ๋ค์ํ ์ฅ์์์ varargs๋ฅผ ์ด๋ป๊ฒ ์ฌ์ฉํ๋์ง ์ฃผ๋ชฉํ์ธ์? ๊ฑฐ๊ธฐ์๋ ์๋ง ์ด์ ๊ฐ ์์ ๊ฒ์ ๋๋ค.
๋ํ ์ผ๋ง๋ ๋ง์ ์ธ์ด๊ฐ ๊ฐ๋ณ ํจ์๋ฅผ ๊ตฌํํ๋์ง ๊ถ๊ธํฉ๋๋ค. "๋ฐฐ์ด์ ์ฌ์ฉํ์ฌ ์ฝ๊ฒ ๊ตฌํ"ํ ์ ์๋๋ผ๋ ์ ์ฉํฉ๋๊น?
๋๋ ๊ทธ๊ฒ์ ์ฌ์ฉํ ๋๋ง๋ค GDScript์์ ๊ทธ๊ฒ๋ค์ ๊ทธ๋ฆฌ์ํ๊ณ ์์ผ๋ฉฐ, ์ด๊ฒ์ด ๋ด๊ฐ C#์ ์ ํธํ๋ ์ด์ ์ค ํ๋์ ๋๋ค. ๋๋ C++. ๋๋ ์๋ฐ. ๋๋ ํ์ด์ฌ. ๋๋ ์ด๋.
์์งํ ๋งํด์, GDScript๋ ๋ด๊ฐ ์์ ํ ์ ์ผํ ์ธ์ด ์ค ๊ทธ๋ฐ ๊ธฐ๋ฅ์ด ์๋ ์ธ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. ๊ฒ๋ค๊ฐ ๋ฃจ์? ์, ํ์ธํด๋ณด๋ ๊ฑฐ๊ธฐ์๋ ์๋ ๊ฒ ๊ฐ์ต๋๋ค. ํด๋น ์ธ์ด๊ฐ ๊ฐ์ง๊ณ ์๋ ๋ชจ๋ ๊ฒ์ GDScript์ ์ถ๊ฐํ๋ ๊ฒ์ ๋ชฉํ๋ก ํด์ผ ํ๋ค๋ ๊ฒ์ ์๋์ง๋ง, ๋ชจ๋ ์ธ์ด์ ๊ณตํต๋ ๊ธฐ๋ฅ ์ด ์๋ค๋ฉด ๊ทธ๋งํ ๊ฐ์น๊ฐ ์์
GDScript ๋ฐฑ์๋์ ์ผ๋ง๋ ๋ง์ ๋ณต์ก์ฑ์ด ์ถ๊ฐ๋ ์ง ํ๋จํ ์ ์์ผ๋ฏ๋ก ๋ณต์ก์ฑ ํธ๋ ์ด๋์คํ์ ๋ํด ๋ง์ด ๋งํ ์ ์์ง๋ง "๋จ์ํ ๊ตฌ๋ฌธ ์คํ"์ด๊ธฐ ๋๋ฌธ์ ๊ทธ๊ฒ๋ค์ ์ฐ๋ ๊ฒ์ ์๋ชป๋ ๊ฒ์ ๋๋ค. ๋ง์ ๊ฒ๋ค.
๋ค์, Godot์์ ์ผ๋ง๋ ๋ง์ ๊ฒ๋ค์ด ๊ทธ๊ฒ๋ค์ ์ฌ์ฉํ๋์ง ์ฃผ๋ชฉํ์ญ์์ค.
์, ๊ตฌ๋ฌธ ์คํ์ ๋๋ค. ๊ทธ๋ฌ๋ ๊ตฌ๋ฌธ ์คํ์ด๋ผ๋ ๊ฒ์ด ๊ทธ๊ฒ์ด ์ข๊ฑฐ๋ ๋์๋ค๋ ๊ฒ์ ์๋ฏธํ์ง๋ ์์ต๋๋ค.
if
,else
์ ๊ฐ์ ์ ์ด ํ๋ฆ๊ณผ ์ฌ์ง์ด ํจ์๋GOTO
์์ ์๋ ์คํ์ผ ๋ฟ์ ๋๋ค. ๊ทธ๊ฒ ๋น์ ์ด ๊ทธ๊ฒ๋ค์ ์ํ์ง ์๋๋ค๋ ๊ฒ์ ์๋ฏธํ์ง๋ ์์ต๋๋ค.
๋ฌด์กฐ๊ฑด ์ ํ์ด๊ธฐ ๋๋ฌธ์ GOTO๋ฅผ ๋์ฒดํ์ง ์์ต๋๋ค. ๋น์ ๋ ํ๋ก๊ทธ๋๋จธ์ ๋๊น?
๊ทธ๋ฌ๋ ์ค์ ๋ก๋ rpc, emit_signal๊ณผ ๊ฐ์ varargs๋ฅผ ์ฌ์ฉํ๋ ํจ์๋ฅผ ์ฌ์ ์ํ๋ ๊ธฐ๋ฅ์ ์ค๋จํฉ๋๋ค.
1๋ ์ ํ ๋ฒ ๋๊ตฐ๊ฐ๊ฐ rpc ๊ธฐ๋ฅ์ ์ฌ์ ์ํ๊ณ ์ถ์ดํ ๊ฒ์ ๋๋ค. ์์ฒ ๋ช ์ ๋ค๋ฅธ ์ฌ๋๋ค์ด ๋งค์ผ Godot 4๊ฐ ์ถ์๋๋ ๊ฒ์ ๋ณด๊ณ ์ถ์ดํฉ๋๋ค.
๋ํ ์ผ๋ง๋ ๋ง์ ์ธ์ด๊ฐ ๊ฐ๋ณ ํจ์๋ฅผ ๊ตฌํํ๋์ง ๊ถ๊ธํฉ๋๋ค. "๋ฐฐ์ด์ ์ฌ์ฉํ์ฌ ์ฝ๊ฒ ๊ตฌํ"ํ ์ ์๋๋ผ๋ ์ ์ฉํฉ๋๊น?
๋๋ ๊ทธ๊ฒ์ ์ฌ์ฉํ ๋๋ง๋ค GDScript์์ ๊ทธ๊ฒ๋ค์ ๊ทธ๋ฆฌ์ํ๊ณ ์์ผ๋ฉฐ, ์ด๊ฒ์ด ๋ด๊ฐ C#์ ์ ํธํ๋ ์ด์ ์ค ํ๋์ ๋๋ค. ๋๋ C++. ๋๋ ์๋ฐ. ๋๋ ํ์ด์ฌ. ๋๋ ์ด๋.
C++์๋ GDscript์ฒ๋ผ ๋ค๋ฅธ ์ ํ์ ๊ฐ์ ์ ์ฅํ ์ ์๋ ํ์ค ๋ฐฐ์ด ์ ํ์ด ์์ต๋๋ค. C++๋ ๊ฐ๋ณ ํจ์๋ฅผ ์ง์ํ์ง๋ง ํ์์ด ์์ ํ์ง ์๊ธฐ ๋๋ฌธ์ ์ฌ์ฉํ์ง ์๋ ๊ฒ์ด ์ข์ต๋๋ค. ์ด๊ฒ์ C ๋ ๊ฑฐ์์ด๋ฉฐ C ์์ฒด์์๋ ๊ตฌ๋ฌธ์์ ์คํ์ด์์ต๋๋ค. ํนํ ๋๋ฒ๊น ์ ์ํด printf๊ฐ ๋ง์ด ์ฌ์ฉ๋์๊ธฐ ๋๋ฌธ์ ๋๋ค. ์์ ์ฝ๋๋ฅผ ๋น ๋ฅด๊ฒ ์ ๋ ฅํ์ฌ ์ผ๋ถ ๋ฐ์ดํฐ๋ฅผ ์ถ๋ ฅํ๋ ค๋ โโ๊ฒฝ์ฐ์ ๊ทธ๋ ์ต๋๋ค. ๊ทธ๊ฒ์ ํญ์ ์ฌ์ฉ๋์๊ธฐ ๋๋ฌธ์ ์์ ํ ์ ๋นํ๋์์ต๋๋ค - ์ค์๊ฐ ์ ์ฝ๊ธฐ! ๊ทธ๋ฌ๋ C ๋๋ C++๋ก ๊ณ ์ ํ ๊ฐ๋ณ ํจ์๋ฅผ ์์ฑํ ์ ์ด ์์ต๋๊น?
๋ค์, Godot์์ ์ผ๋ง๋ ๋ง์ ๊ฒ๋ค์ด ๊ทธ๊ฒ๋ค์ ์ฌ์ฉํ๋์ง ์ฃผ๋ชฉํ์ญ์์ค.
๋๋ฒ๊ทธ ์ถ๋ ฅ์ ์ํด - ๊ผญ! ๊ทธ๋ฌ๋ print()๊ฐ ๊ฐ๋ณ์ ์ด์ง ์์ผ๋ฉด print("Hello ", "World) ๋์ print(["Hello ", "World"])๋ฅผ ์ ๋ ฅํด์ผ ํฉ๋๋ค - ํฐ ์ฐจ์ด๋ ์์ต๋๋ค...
๋ฌด์กฐ๊ฑด ์ ํ์ด๊ธฐ ๋๋ฌธ์ GOTO๋ฅผ ๋์ฒดํ์ง ์๋๋ค.
๊ธ์, ๋ง์. ๋ฌผ๋ก ์กฐ๊ฑด๋ถ ์ ํ์ ๋ํด ์ด์ผ๊ธฐํ๊ณ ์์์ต๋๋ค. ์ด๋ ... ์ถ์ธก ํ ์ ์์ต๋๋ค. ๊ทธ๋๋ ์์ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. ์ผ๋ถ ๋ด์ฉ์ ๋ณด๋ค ๋ช ํํ๊ฒ ์ ๋ฌํ ์ ์๋๋ก ์์ ์์ค ๊ธฐ๋ฅ์ ๊ตฌ์ถํ์ต๋๋ค.
C++์๋ GDscript์ฒ๋ผ ๋ค๋ฅธ ์ ํ์ ๊ฐ์ ์ ์ฅํ ์ ์๋ ํ์ค ๋ฐฐ์ด ์ ํ์ด ์์ต๋๋ค.
์ข์, Python, Lua ๋๋ Go(๋๋ ๋ค๋ฅธ ์ธ์ด์ ํธ์คํธ)์ ๋ํด ๋ ผ์์ ๋ฒ์ด์ญ์์ค. ๊ทธ๋ฐ ๋ค์ ๊ทธ๊ฒ๋ค์ด ์๊ณ ์ฌ์ ํ ๊ฐ๋ณ์ ๊ธฐ๋ฅ์ ๊ฐ์ง๊ณ ์์ต๋๋ค.
๊ทธ๋ฌ๋ print()๊ฐ ๊ฐ๋ณ์ ์ด์ง ์์ ๊ฒฝ์ฐ print("Hello ", "World) ๋์ print(["Hello ", "World"])๋ฅผ ์ ๋ ฅํด์ผ ํฉ๋๋ค. ํฐ ์ฐจ์ด๋ ์์ต๋๋ค.
๋ฌผ๋ก , ๊ทธ ๊ฐ๋จํ ํ ์คํธ ์ผ์ด์ค์์. ๋ ๋ณต์กํ ๋ฐ์ดํฐ์์๋ ๋ ๋ณด๊ธฐ ํํด์ง๋๋ค. ํนํ ์ฌ๋ฌ ์์ค์์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๊ธฐ ์์ํ๊ณ ์ด์ ์๋์ผ๋ก ์ด๋ฅผ ๋ฐฐ์ด์ ๋จผ์ ์ฑ์์ผ ํ๋ ๊ฒฝ์ฐ ๋์ฑ ๊ทธ๋ ์ต๋๋ค. ๋๋ ๊ทธ๊ฒ์ด ํฐ ์์ค์ด ์๋๋ผ๋ ๋ฐ ๋์ํฉ๋๋ค. ์ฌ์ ํ variadic ํจ์๋ ๊ฒฝ์ฐ์ ๋ฐ๋ผ ๋ ๊นจ๋ํ ์ฝ๋๋ฅผ ๋ง๋ญ๋๋ค.
ํ์ง๋ง...
๊ทธ๋ฌ๋ C ๋๋ C++๋ก ๊ณ ์ ํ ๊ฐ๋ณ ํจ์๋ฅผ ์์ฑํ ์ ์ด ์์ต๋๊น?
๋น์ ๋ ํ๋ก๊ทธ๋๋จธ์ ๋๊น?
์์ ๊ฐ์ด ์ ์์ ๋ ผ์์ ํ๋ ๊ฒ ๊ฐ์ง๋ ์์ต๋๋ค. ์ด๋ค ๊ฒฝ์ฐ์๋ ๋ ์ด์ ๋น์ ๊ณผ ์ด์ผ๊ธฐํ๋ ๋ฐ ์ ๋ง๋ก ๊ด์ฌ์ด ์์ต๋๋ค. ๊ทธ๋์... ์๋์, ์ ๋ ์ข์ ๋ง์ค์ฝํธ๋ฅผ ๋ง๋ค๊ธฐ ์ํด ์์ง ๊ธฐ์ฌ์๋ก ๋์ด๋ ๋ฟ์ ๋๋ค. ๊ณ์ ์งํํด ์ฃผ์ธ์.
๋ฌด์กฐ๊ฑด ์ ํ์ด๊ธฐ ๋๋ฌธ์ GOTO๋ฅผ ๋์ฒดํ์ง ์์ต๋๋ค. ๋น์ ๋ ํ๋ก๊ทธ๋๋จธ์ ๋๊น?
๋๋ถ๋ถ์ ์กฐ๊ฑด๋ฌธ, ํนํ ๋ฃจํ๋ ์ ๋ฌธํ๋ ์ ํ ๋ฌธ์ผ ๋ฟ์ด๋ฉฐ ๋๋ถ๋ถ goto ๋ฌธ๊ณผ ๋์ผํฉ๋๋ค. ์ค์ฉ์ ์ธ ์๋ฏธ์์ ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ ์ํ์ค ์ ์ด ๋ฌธ์ ๊ทธ ํ์ฅ์ ๋๋ค. ์ด๊ฒ์ ๋น์ ์์ ์ ์ง์งํ๋ ์ด๋ฆฌ์์ ์ฃผ์ฅ์ด๋ฉฐ(์ค์ ๋ก ๋ ผ์์ ํ์ง ์๊ธฐ ๋๋ฌธ์ ๊ทธ๊ฒ์ ์ธ๋ชจ์๋ ์๋ฏธ๋ก ์ ์ฃผ์ฅํ ๋ฟ์ ๋๋ค) ๋ ๋ฒ์งธ ๋ถ๋ถ์ ๋ฌด๋กํฉ๋๋ค.
C++์๋ GDscript์ฒ๋ผ ๋ค๋ฅธ ์ ํ์ ๊ฐ์ ์ ์ฅํ ์ ์๋ ํ์ค ๋ฐฐ์ด ์ ํ์ด ์์ต๋๋ค. C++๋ ๊ฐ๋ณ ํจ์๋ฅผ ์ง์ํ์ง๋ง ํ์์ด ์์ ํ์ง ์๊ธฐ ๋๋ฌธ์ ์ฌ์ฉํ์ง ์๋ ๊ฒ์ด ์ข์ต๋๋ค. ์ด๊ฒ์ C ๋ ๊ฑฐ์์ด๋ฉฐ C ์์ฒด์์๋ ๊ตฌ๋ฌธ์์ ์คํ์ด์์ต๋๋ค. ํนํ ๋๋ฒ๊น ์ ์ํด printf๊ฐ ๋ง์ด ์ฌ์ฉ๋์๊ธฐ ๋๋ฌธ์ ๋๋ค. ์์ ์ฝ๋๋ฅผ ๋น ๋ฅด๊ฒ ์ ๋ ฅํ์ฌ ์ผ๋ถ ๋ฐ์ดํฐ๋ฅผ ์ถ๋ ฅํ๋ ค๋ โโ๊ฒฝ์ฐ์ ๊ทธ๋ ์ต๋๋ค. ๊ทธ๊ฒ์ ํญ์ ์ฌ์ฉ๋์๊ธฐ ๋๋ฌธ์ ์์ ํ ์ ๋นํ๋์์ต๋๋ค - ์ค์๊ฐ ์ ์ฝ๊ธฐ! ๊ทธ๋ฌ๋ C ๋๋ C++๋ก ๊ณ ์ ํ ๊ฐ๋ณ ํจ์๋ฅผ ์์ฑํ ์ ์ด ์์ต๋๊น?
C++์๋ varargs(๋๋ ์ผ๋ฐ์ ์ผ๋ก ์ ํ์ด ์ง์ ๋์ง ์์ ๋ฐฐ์ด)์ ๋ํ ํ์ค ๋ฐฐ์ด ์ ํ์ด ์์ง๋ง ํ์ฌ ์ฝ 10๋ ๋์ ์ด๋ฅผ ์ฒ๋ฆฌํ๋ ๋ฐฉ์์ด ๋จผ์ ์กด์ฌํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์คํ๋ ค ํดํค) ๋ ๋ฒ์งธ๋ก varadic ํ ํ๋ฆฟ์ ์ฌ์ฉํ๋ฉด ์ ๋ ฅ ๋ฌธ์ ๋ฅผ ์์ ํ ๊ฑด๋๋ธ ์ ์์ต๋๋ค. Varadic ํ ํ๋ฆฟ์ ์ฌ์ฉํ์ฌ C++์์ varargs๋ฅผ ์ฒ๋ฆฌํ๋ ๋ฐฉ๋ฒ์ด ์์ต๋๋ค. C++์ varargs๋ฅผ ์ฌ์ ํ ๋ฏฟ๋ ์ฌ๋๋ค์ ์๋ง๋ ์์ฆ ์๋ชป๋ ์ง์ ์์ ์์ํ๊ณ ์์ ๊ฒ์ ๋๋ค.
๋๋ ๊ฐ์ธ์ ์ผ๋ก ํ ๋ก ์ ๋ณ๋ก ์ ๊ฒฝ ์ฐ์ง ์๋๋ค(๊ฐ์ธ์ ์ผ๋ก ๋ฐฑ์๋์ ์์ ์๋ ๋์ GDScript์์ ๋ฐฐ์ด ๊ธฐ๋ฐ ๊ฐ๋ณ ์ธ์ ์ ํ์ ๊ฐ๋ ๊ฒ์ด ๋ ๊นจ๋ํ๊ณ ์กฐ์ง์ ์ด๋ผ๋ ์ ์ ์ ์ธํ๊ณ ๋ ์ธ์ด ๊ธฐ๋ฅ์ด ๊ตฌํ๋์ด์ผ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค. ์ธ์ด, ์คํ๋ฟ๋ง ์๋๋ผ ์ ์ ๋๋ค.) ๊ทธ๋ฌ๋ ์ด๋ฌํ ์๊ฒฌ์ ์์ ๋์ด์ผ ํ๋ฉฐ, ์ด ๊ฒฝ์ฐ์๋ ๋ค์ ๋ฌด๋กํ๊ฒ ํ๋ํ๊ณ ์๋ค๋ ์ ์ ์ ์ธํ๊ณ , ์ด๋ ๊ฒ ๊ฐ๊ด์ ์ผ๋ก ๋ค๋ฃจ์ด์ผ ํ ๋ฐ๋์ ๋ํด ๋ถ์ ์ ์ผ๋ก ๋ฐ์ํ๋ค.
๋ฌด์กฐ๊ฑด ์ ํ์ด๊ธฐ ๋๋ฌธ์ GOTO๋ฅผ ๋์ฒดํ์ง ์์ต๋๋ค. ๋น์ ๋ ํ๋ก๊ทธ๋๋จธ์ ๋๊น?
๋๋ถ๋ถ์ ์กฐ๊ฑด๋ฌธ, ํนํ ๋ฃจํ๋ ์ ๋ฌธํ๋ ์ ํ ๋ฌธ์ผ ๋ฟ์ด๋ฉฐ ๋๋ถ๋ถ goto ๋ฌธ๊ณผ ๋์ผํฉ๋๋ค. ์ค์ฉ์ ์ธ ์๋ฏธ์์ ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ ์ํ์ค ์ ์ด ๋ฌธ์ ๊ทธ ํ์ฅ์ ๋๋ค. ์ด๊ฒ์ ๋น์ ์์ ์ ์ง์งํ๋ ์ด๋ฆฌ์์ ์ฃผ์ฅ์ด๋ฉฐ(์ค์ ๋ก ๋ ผ์์ ํ์ง ์๊ธฐ ๋๋ฌธ์ ๊ทธ๊ฒ์ ์ธ๋ชจ์๋ ์๋ฏธ๋ก ์ ์ฃผ์ฅํ ๋ฟ์ ๋๋ค) ๋ ๋ฒ์งธ ๋ถ๋ถ์ ๋ฌด๋กํฉ๋๋ค.
K, ๋๋ ๋ด ์๊ฐ์ ๋ญ๋นํ๋ ์ฌ๋๋ค์๊ฒ ๋ฌด๋กํฉ๋๋ค. ๊ทธ์ ์์ ์: if ๋์ ์ GOTO๋ฅผ ์ฌ์ฉํ์ง ์๋ ์ด์ ์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ ๋ GOTO๊ฐ if๋ฅผ ๋์ฒดํ์ง ์๋๋ค๊ณ ๋งํ์ต๋๋ค. GOTO๋ ์กฐ๊ฑด๋ฌธ์ด ์๋๋ฉฐ ์กฐ๊ฑด๋ฌธ์ ๋์ฒดํ๋ ค๋ฉด ๋์ฒดํ ๋ด์ฉ์ ์ ํํ ์ ๋ ฅํ๋ฉด ๋ฉ๋๋ค. ์ด๋ฏธ ์๊ฐ ์์ต๋๊น?
C++์๋ GDscript์ฒ๋ผ ๋ค๋ฅธ ์ ํ์ ๊ฐ์ ์ ์ฅํ ์ ์๋ ํ์ค ๋ฐฐ์ด ์ ํ์ด ์์ต๋๋ค. C++๋ ๊ฐ๋ณ ํจ์๋ฅผ ์ง์ํ์ง๋ง ํ์์ด ์์ ํ์ง ์๊ธฐ ๋๋ฌธ์ ์ฌ์ฉํ์ง ์๋ ๊ฒ์ด ์ข์ต๋๋ค. ์ด๊ฒ์ C ๋ ๊ฑฐ์์ด๋ฉฐ C ์์ฒด์์๋ ๊ตฌ๋ฌธ์์ ์คํ์ด์์ต๋๋ค. ํนํ ๋๋ฒ๊น ์ ์ํด printf๊ฐ ๋ง์ด ์ฌ์ฉ๋์๊ธฐ ๋๋ฌธ์ ๋๋ค. ์์ ์ฝ๋๋ฅผ ๋น ๋ฅด๊ฒ ์ ๋ ฅํ์ฌ ์ผ๋ถ ๋ฐ์ดํฐ๋ฅผ ์ถ๋ ฅํ๋ ค๋ โโ๊ฒฝ์ฐ์ ๊ทธ๋ ์ต๋๋ค. ๊ทธ๊ฒ์ ํญ์ ์ฌ์ฉ๋์๊ธฐ ๋๋ฌธ์ ์์ ํ ์ ๋นํ๋์์ต๋๋ค - ์ค์๊ฐ ์ ์ฝ๊ธฐ! ๊ทธ๋ฌ๋ C ๋๋ C++๋ก ๊ณ ์ ํ ๊ฐ๋ณ ํจ์๋ฅผ ์์ฑํ ์ ์ด ์์ต๋๊น?
C++์๋ varargs(๋๋ ์ผ๋ฐ์ ์ผ๋ก ์ ํ์ด ์ง์ ๋์ง ์์ ๋ฐฐ์ด)์ ๋ํ ํ์ค ๋ฐฐ์ด ์ ํ์ด ์์ง๋ง ํ์ฌ ์ฝ 10๋ ๋์ ์ด๋ฅผ ์ฒ๋ฆฌํ๋ ๋ฐฉ์์ด ๋จผ์ ์กด์ฌํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์คํ๋ ค ํดํค) ๋ ๋ฒ์งธ๋ก varadic ํ ํ๋ฆฟ์ ์ฌ์ฉํ๋ฉด ์ ๋ ฅ ๋ฌธ์ ๋ฅผ ์์ ํ ๊ฑด๋๋ธ ์ ์์ต๋๋ค. Varadic ํ ํ๋ฆฟ์ ์ฌ์ฉํ์ฌ C++์์ varargs๋ฅผ ์ฒ๋ฆฌํ๋ ๋ฐฉ๋ฒ์ด ์์ต๋๋ค. C++์ varargs๋ฅผ ์ฌ์ ํ ๋ฏฟ๋ ์ฌ๋๋ค์ ์๋ง๋ ์์ฆ ์๋ชป๋ ์ง์ ์์ ์์ํ๊ณ ์์ ๊ฒ์ ๋๋ค.
๋๋ ๊ฐ์ธ์ ์ผ๋ก ํ ๋ก ์ ๋ณ๋ก ์ ๊ฒฝ ์ฐ์ง ์๋๋ค(๊ฐ์ธ์ ์ผ๋ก ๋ฐฑ์๋์ ์์ ์๋ ๋์ GDScript์์ ๋ฐฐ์ด ๊ธฐ๋ฐ ๊ฐ๋ณ ์ธ์ ์ ํ์ ๊ฐ๋ ๊ฒ์ด ๋ ๊นจ๋ํ๊ณ ์กฐ์ง์ ์ด๋ผ๋ ์ ์ ์ ์ธํ๊ณ ๋ ์ธ์ด ๊ธฐ๋ฅ์ด ๊ตฌํ๋์ด์ผ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค. ์ธ์ด, ์คํ๋ฟ๋ง ์๋๋ผ ์ ์ ๋๋ค.) ๊ทธ๋ฌ๋ ์ด๋ฌํ ์๊ฒฌ์ ์์ ๋์ด์ผ ํ๋ฉฐ, ์ด ๊ฒฝ์ฐ์๋ ๋ค์ ๋ฌด๋กํ๊ฒ ํ๋ํ๊ณ ์๋ค๋ ์ ์ ์ ์ธํ๊ณ , ์ด๋ ๊ฒ ๊ฐ๊ด์ ์ผ๋ก ๋ค๋ฃจ์ด์ผ ํ ๋ฐ๋์ ๋ํด ๋ถ์ ์ ์ผ๋ก ๋ฐ์ํ๋ค.
K, ํ์ง๋ง ๊ทธ๊ฒ ์ ํํ ์ ์์ ์ ๋๋ค. GDscript์๋ ๋ค๋ฅธ ์ ํ์ ๋ณด์ ํ ์ ์๋ ๋ฐ๋ณตํ ์ ์๋ ํ์ค ์ ํ์ด ์์ผ๋ฏ๋ก C++์์ ์๋ํ๋ ๊ฐ๋ณ ํจ์๋ฅผ ์ป๋ ๋ฐ ํ์ํ ๋ชจ๋ ํด์ปค๋ฅผ ์๋ง์ผ๋ก ๋ง๋ค ํ์๊ฐ ์์ต๋๋ค. , ์๋ง๋ C++์์๋ ๊ฐ๋ณ ํ ํ๋ฆฟ์ด ์ ๋นํ๋ ์ ์์ต๋๋ค.
K, ๋๋ ๋ด ์๊ฐ์ ๋ญ๋นํ๋ ์ฌ๋๋ค์๊ฒ ๋ฌด๋กํฉ๋๋ค.
๊ทธ๋ฌ๋ฉด 30์ผ ๋์ @godotengine ๋ฆฌํฌ์งํ ๋ฆฌ์์ ์ํธ ์์ฉํ ์ ์๋๋ก ์ฐจ๋จ๋์ด ๋ค๋ฅธ ํ๋ก์ ํธ์ ์๊ฐ์ ๋ญ๋นํ ์ ์์ต๋๋ค.
์ฐ๋ฆฌ๋ ํ๋ ๊ฐ๋ น์ ๊ฐ์ง๊ณ ์์ผ๋ฉฐ ๋๊ตฌ์๊ฒ๋ ๋ฌด๋กํ ํ๋์
Godot ์์ง์ ๋ํ ๊ธฐ๋ฅ ๋ฐ ๊ฐ์ ์ ์์ ํ์ฌ ์ ์ฉ Godot ๊ฐ์ ์ ์(GIP) ( godotengine/godot-proposals ) ์ด์ ํธ๋์ปค์์ ๋ ผ์๋๊ณ ๊ฒํ ๋๊ณ ์์ต๋๋ค. GIP ์ถ์ ๊ธฐ์๋ ์ ์์์ ๋ชจ๋ ๊ด๋ จ ์ ๋ณด๊ฐ ํฌํจ๋์ด ์์ฐ์ ์ธ ํ ๋ก ์ ์์ํ๊ณ ์ปค๋ฎค๋ํฐ๊ฐ ์์ง ์ ์์์ ์ ํจ์ฑ์ ํ๊ฐํ๋ ๋ฐ ๋์์ด ๋๋๋ก ์ค๊ณ๋ ์ธ๋ถ ๋ฌธ์ ํ ํ๋ฆฟ์ด ์์ต๋๋ค.
๊ธฐ๋ณธ( godotengine/godot ) ์ถ์ ๊ธฐ๋ ์ด์ ์ ์ ์ผ๋ก ๋ฒ๊ทธ ๋ณด๊ณ ์ ๋ฐ ๋์ด์ค๊ธฐ ์์ฒญ ์ ์ฉ์ด๋ฏ๋ก ๊ธฐ์ฌ์๊ฐ ๋ฒ๊ทธ ์์ ์์ ์ ๋ ์ง์คํ ์ ์์ต๋๋ค. ๋ฐ๋ผ์ ์ด์ ์ฃผ์ ์ด์ ํธ๋์ปค์์ ์ด์ ๊ธฐ๋ฅ ์ ์์ ๋ชจ๋ ์ข ๋ฃํฉ๋๋ค.
์ด ๊ธฐ๋ฅ ์ ์์ ๊ด์ฌ์ด ์์ผ์๋ฉด ์ฃผ์ด์ง ๋ฌธ์ ํ ํ๋ฆฟ ์ ๋ฐ๋ผ GIP ํธ๋์ปค์์ ์ ์ ์์ ์ฌ์ญ์์ค (์ด๋ฏธ ์กด์ฌํ์ง ์๋์ง ํ์ธํ ํ). ๊ด๋ จ ํ ๋ก ์ด ํฌํจ๋ ๊ฒฝ์ฐ ์ด ๋ซํ ๋ฌธ์ ๋ฅผ ์ฐธ์กฐํด์ผ ํฉ๋๋ค(์ ์ ์์์ ์์ฝํ๋ ๊ฒ์ด ์ข์ต๋๋ค). ๋ฏธ๋ฆฌ ๊ฐ์ฌ๋๋ฆฝ๋๋ค!
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
์ผ๋ถ ๊ธฐ๋ฅ์ ์ด๋ฏธ
varargs
์ด์ง๋ง ์ฌ์ ์ํ ๋ฐฉ๋ฒ์ด ์๊ธฐ ๋๋ฌธ์ ์ด ๊ธฐ๋ฅ์ด ์ ๋ง ํ์ํ๋ค๊ณ ์๊ฐํฉ๋๋ค.