Godot: setget ν•¨μˆ˜λŠ” 자체 할당을 μœ„ν•΄ ν˜ΈμΆœλ©λ‹ˆλ‹€.

에 λ§Œλ“  2016λ…„ 11μ›” 12일  Β·  3μ½”λ©˜νŠΈ  Β·  좜처: godotengine/godot

이것이 μ˜λ„ν•œ λ™μž‘μΈμ§€ μ•„λ‹Œμ§€λŠ” μ•Œ 수 μ—†μ§€λ§Œ(κ·Έλ ‡λ‹€λ©΄ μ£„μ†‘ν•©λ‹ˆλ‹€. 이 문제λ₯Ό λ‹«μœΌμ‹­μ‹œμ˜€), 이것은 λΆ„λͺ…νžˆ ν—ˆμš©λ˜μ–΄μ„œλŠ” μ•ˆ λ©λ‹ˆλ‹€!

μš°λ¦¬κ°€ λ§ν•˜μž,
1) foo λ³€μˆ˜κ°€ 기본적으둜 1의 값을 가지기λ₯Ό μ›ν•©λ‹ˆλ‹€.
2) μ‚¬μš©μžκ°€ μ–΄λ–€ μ‹μœΌλ‘œλ“  μƒν˜Έ μž‘μš©ν•  λ•Œ 값이 λ³€κ²½λ©λ‹ˆλ‹€(μž…λ ₯이라고 κ°€μ •ν•˜κ² μŠ΅λ‹ˆλ‹€).
3) μ‚¬μš©μžκ°€ μ™„λ£Œν•œ ν›„ foo 의 값은 λ‹€μ‹œ 1의 값을 κ°€μ Έμ•Ό ν•©λ‹ˆλ‹€.

μ—¬κΈ°μ„œ μΌμ–΄λ‚˜λŠ” 일은 setget 와 κ΄€λ ¨λœ ν•¨μˆ˜κ°€ 이미 1일 λ•Œ 값이 1둜 섀정될 λ•Œλ§ˆλ‹€ 호좜되고 μ›λž˜ 값이 λ‹€λ₯Ό λ•Œ ν•œ 번(처음) ν˜ΈμΆœλ˜μ–΄μ•Ό ν•œλ‹€λŠ” κ²ƒμž…λ‹ˆλ‹€. 이것은 λ‚˜λ₯Ό μœ„ν•΄ μ„±λŠ₯을 λ‹€μ†Œ 죽이고 μžˆμŠ΅λ‹ˆλ‹€. λ‚˜λŠ” 이것을 ν•  수 μžˆλ‹€λŠ” 것을 μ•Œκ³  μžˆμŠ΅λ‹ˆλ‹€.

if (new_value == old_value):
   return

κ·ΈλŸ¬λ‚˜ 이것은 μžλ™μœΌλ‘œ μˆ˜ν–‰λ˜μ–΄μ•Ό ν•©λ‹ˆλ‹€.

feature proposal gdscript

κ°€μž₯ μœ μš©ν•œ λŒ“κΈ€

κ°„λ‹¨ν•œ ν•΄κ²° 방법이 μžˆμ„ λ•Œ 이전 μ½”λ“œλ₯Ό 깨뜨릴 κ°€μΉ˜κ°€ μ—†λ‹€κ³  μƒκ°ν•©λ‹ˆλ‹€(λ™μΌν•œ κ°’ ν• λ‹Ή μ‹œλ„μ— λŒ€ν•΄ μ‚¬μš©μžμ—κ²Œ μ•Œλ¦Όμ„ ν‘œμ‹œν•˜κΈ° μœ„ν•΄ setterλ₯Ό ν™œμš©ν•˜λŠ” μ½”λ“œκ°€ μžˆμŠ΅λ‹ˆλ‹€).

λͺ¨λ“  3 λŒ“κΈ€

이것을 μžλ™μœΌλ‘œ ν•˜λŠ” 것은 쒋은 생각이 μ•„λ‹ˆλΌκ³  μƒκ°ν•©λ‹ˆλ‹€. 이미 μžˆλŠ” 것과 λ™μΌν•œ κ°’μœΌλ‘œ λ³€μˆ˜λ₯Ό 섀정해도 μ„±λŠ₯에 영ν–₯을 λ―ΈμΉ˜μ§€ μ•Šμ•„μ•Ό ν•©λ‹ˆλ‹€. μ΄λŠ” ν•„μš”ν•œ 경우 setget ν•¨μˆ˜κ°€ μ²˜λ¦¬ν•΄μ•Ό ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€. λ˜ν•œ κ°’ 검사λ₯Ό μΆ”κ°€ν•˜λ©΄ _will_ μƒˆλ‘œμš΄(κ°œλ…μƒ ν•„μš”ν•˜μ§€ μ•Šμ€) 뢄기이기 λ•Œλ¬Έμ— μ„±λŠ₯에 영ν–₯을 λ―ΈμΉ©λ‹ˆλ‹€.

λ˜ν•œ λ™μΌν•œ 값을 섀정해도 setter에 영ν–₯을 λ―ΈμΉ˜μ§€ μ•ŠμœΌλ―€λ‘œ λ¬΄μ‹œν•  수 μžˆλ‹€κ³  κ°€μ •ν•  μˆ˜λŠ” μ—†μŠ΅λ‹ˆλ‹€.

맀번 ν•˜λ‚˜μ˜ 값을 μ„€μ •ν•˜λ©΄ μ„±λŠ₯이 μ €ν•˜λ  수 μžˆλŠ” 경우 맀우 λ³΅μž‘ν•œ setterκ°€ μžˆλŠ” κ²ƒμ²˜λŸΌ λ³΄μž…λ‹ˆλ‹€.

κΈ€μŽ„μš”, 일반적으둜 자체 ν• λ‹Ήλ§Œ ν•˜λ©΄ λ¬Έμ œκ°€ λ˜μ§€ μ•Šμ§€λ§Œ "setget"이 전뢀인 κ²ƒμ²˜λŸΌ μƒˆ 값을 ν• λ‹Ήν•˜λŠ” 것보닀 더 λ§Žμ€ μž‘μ—…μ„ μˆ˜ν–‰ν•˜λ©΄ μ„±λŠ₯이 μ €ν•˜λ©λ‹ˆλ‹€. 특히 값이 λ³€κ²½λ˜μ§€ μ•Šκ³  λͺ¨λ“  ν”„λ ˆμž„μ— 자체 ν• λ‹Ήλœ 경우.

κ²Œλ‹€κ°€ (λ‚΄κ°€ μ•Œκ³  μžˆλŠ”) λͺ¨λ“  C++ μ»΄νŒŒμΌλŸ¬λŠ” κ·ΈλŸ¬ν•œ μž”ν•™ ν–‰μœ„λ‘œλΆ€ν„° 당신을 λ³΄ν˜Έν•©λ‹ˆλ‹€. (적어도 κΈ°λ³Έ μœ ν˜•μ˜ 경우 ν• λ‹Ή μ—°μ‚°μžλ₯Ό μ˜€λ²„λ‘œλ“œν•˜λ©΄ 이 λ³΄ν˜Έκ°€ λ¬΄νš¨ν™”λ©λ‹ˆλ‹€.) 사싀, amd CPUμ—μ„œ 뢀동 μ†Œμˆ˜μ  μˆ«μžμ— λŒ€ν•œ 자체 ν• λ‹Ή 후에도 값이 λ™μΌν•˜κ²Œ μœ μ§€λ˜λŠ”μ§€ ν™•μΈν•˜κΈ° μœ„ν•΄ 일뢀 μ½”λ“œκ°€ 이λ₯Ό ν™•μΈν•˜λŠ” 것을 ν™•μΈν–ˆμŠ΅λ‹ˆλ‹€. 그것은 이름을 μžŠμ–΄ 버린 일뢀 ν”„λ‘œμ νŠΈμ— λŒ€ν•œ μ˜¨μ „μ„± κ²€μ‚¬λ‘œ μˆ˜ν–‰λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

κ°„λ‹¨ν•œ ν•΄κ²° 방법이 μžˆμ„ λ•Œ 이전 μ½”λ“œλ₯Ό 깨뜨릴 κ°€μΉ˜κ°€ μ—†λ‹€κ³  μƒκ°ν•©λ‹ˆλ‹€(λ™μΌν•œ κ°’ ν• λ‹Ή μ‹œλ„μ— λŒ€ν•΄ μ‚¬μš©μžμ—κ²Œ μ•Œλ¦Όμ„ ν‘œμ‹œν•˜κΈ° μœ„ν•΄ setterλ₯Ό ν™œμš©ν•˜λŠ” μ½”λ“œκ°€ μžˆμŠ΅λ‹ˆλ‹€).

이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰