티스토리 뷰
람다를 다루고 있는 영상을 검색해 보니까 이 강의가 제일 잘 나온듯 싶다. 내가 2.0을 쓸때는 이게 안되었었는데 4.0으로 넘어가면서 추가가 되었다고 한다.
앞부분을 요약하면 함수도 여타 노드들과 같은 객체라는 거다. 이걸 일급 함수라고 한다. 그래서 함수를 변수에 담을 수도 있고 매개변수로도 넘겨 줄수 있다.
이거 말고 함수형에 주요 특징중 하나는 불변성을 강조하는 거다. 함수내부가 다른 요인에 의해서 바뀌거나 그러면 안된다는 원칙이다. 같은 맥략으로 const를 주로 사용한다. C#에서는 좀더 편하게 = 대신에 화살표 함수인 => 을 쓰면 알아서 불변성으로 바꾸어 준다. 이게 수학적으로 일대일 대응에서 가져온 아이디어라고 알고 있다.
이건 내가 만든 영상인데 여기서 보면 꼭 바꿔야 하는 변수를 빼놓거는 = 이 아니라 => 를 쓰는 것을 볼수 있다. 나도 회사에서 유니티를 주니어들을 가르칠때 가급적 꼭 필요할 때만 =을 쓰고 =>가 기본이라고 가르치는 편이다.
C# 바로 i => i * 2이런식으로 가지만 F#은 익명함수를 만들때 fun을 써준다. GD Script도 같은 식으로 func(i): i * 2 이런식으로 가는듯 싶다. 보통 필터 함수를 많이 쓰고 그 다음으로 맵 그리고 리듀스를 쓰는듯 싶다. C#에서 리듀스는 집계라는 어려운 용어를 써서 몰라가지고 안쓰고 있었는데 최근에 알게 됬다.
일단 영상을 충분히 흟어 본거 같다. 한번 따라해 보고 마무리 하면 될듯 싶다. 블로그 글을 부지런히 써두어야 겠다. 쉬고 있을때 블로그도 써둘수 있지 회사 다니면 바뻐서 쓸 시간이 잘 안나더라.
따라 해봤는데 true가 아니라 false가 나온다. 이부분은 영상과 다른듯 싶다. 변수에 넣어서 변수를 실행시키는거는 잘 작동한다.
매개변수로 익명함수를 넘기는 것도 잘 작동한다.
잘 작동한다.
이게 GD Script가 파이썬 라이크라 동적으로 정해주는데 개인적으로 동적으로 정해주는 거를 나쁘게 생각하지는 않는다. 다만 매개변수의 경우에는 동적으로 넘겨주면 사고가 나는 경우가 왕왕 있어서 이 경우에 한해서는 이런식으로 타입을 전해주는거를 선호하는 편이다. 그런데 아까 Callable이 false가 나왔는데도 Callable로도 작동에는 문제가 없어보인다.
어제 class를 노드를 안쓰고 어떻게 참조하는지 모르겠다고 했는데 class_name을 쓰면 전역에서 참조가 가능한듯 싶다. 개인적으로 싱글톤을 잘 안쓰는 편이라 일단 노드로 찾는거로 하도록 해야 겠다.
그 뒤편으로 filter와 map을 쓰는 법이 나온다.
개인적으로 함수형 프로그래밍에서 실무에 자주 쓸만한게 이거더라. 내경우는 리스트를 주력으로 쓰고 배열의 경우에는 성능이 중요한 일부분에만 제한적으로 쓰는 편이다.
C#에서도 꽤 요긴하긴 쓰는 기능이다.
C#에 패턴 매칭도 유용하게 사용하는데 이것도 있는지 테스트를 해봐야 겠다.
https://docs.godotengine.org/ko/4.x/tutorials/scripting/gdscript/gdscript_basics.html
GDScript reference
GDScript is a high-level, object-oriented, imperative, and gradually typed programming language built for Godot. It uses an indentation-based syntax similar to languages like Python. Its goal is to...
docs.godotengine.org
일단 문서에는 존재한다.
요거인데 익명함수랑 조합하면 기존에 swich문이나 아니면 if else 보다 간결하게 쓸수 있어서 선호하는 편이다. 아마 대다수 함수형 패러다임을 다루는 언어들에는 이게 있다. 패턴 매칭이라고 검색하면 나온다.
최종 코드다.
4.0으로 넘어가면서 추가된 함수형 패러다임은 이정도면 될듯 싶다. 함수형 패러다임에는 이거 말고도 커링이라든지 클로저라든지 있지만 개인적으로 실전에서 잘 안쓰는 편이다. 영어 학습도 그렇지만 문법은 꼭필요한 최소한도로만 해두는것이 전체적인 실력을 더 올리는데 도움이 된다. 이정도 하고 넘어가면 될듯 싶다.
'학습' 카테고리의 다른 글
고도 엔진 검토 (1) | 2024.09.10 |
---|---|
셰이더 강의 추천 (0) | 2024.03.25 |
고도 엔진 셰이더 강의 (0) | 2023.12.24 |
고도엔진 Json 저장 (2) | 2023.12.23 |