순수함수를 만들었는데 정확히 언제 실행되는지 궁금해서 작성하는 글
가장 큰 차이점은 함수의 동작으로 클래스의 멤버나 상태를 변경하는지 유무
✅ 참조 투명성
(Referential Transparency)
: 함수가 함수 외부의 영향을 받지 않는 것으로, 동일한 입력에 대해 항상 동일한 출력을 반환
✅ 부작용 없음
(No Side Effect)
: 함수 내부에서 외부 상태를 변경하지 않음
✅ 상태 독립성
(State Independence)
: 외부 상태나 전역 변수를 참조하지 않음
즉, 순수 함수는 연결된 노드마다 한 번씩 호출됨
함수 선언에서 BlueprintPure
키워드 지정
Pure 박스 체크 활성화
✅ 부작용 존재
(Side Effects)
: 외부 상태를 변경하거나, 전역 변수를 참조 및 수정
✅ 상태 의존성
(State Dependency)
: 함수의 동작이 외부 상태나 전역 변수에 의해 영향을 받음
즉, 비순수 함수는 실행핀에 의해 호출됨
함수 선언에서 BlueprintCallable
키워드 지정
Pure 박스 체크 비활성화
int Add(int a, int b) {
return a+b;
}
입력이 같으면 항상 같은 결과를 반환하는 함수를 순수함수로 만들어줌
❓ 궁금했던 건 Save Data in Struct 함수가 언제 불리느냐임
순수함수는 연결된 노드마다 한 번씩 호출되므로
1️⃣ Client Message, Client IP, Client ID 데이터가 Set될 때 :
데이터가 설정(Set)될 때마다 이 데이터를 입력으로 받아 즉시 실행
2️⃣ Call On Data Received에서 사용될 때:
해당 함수의 입력으로 Client Data Struct가 필요하므로, Save Data in Struct 함수가 실행되어 Client Data Struct를 생성하고 반환
int Add(int a, int b) {
globalCounter++;
return a+b;
}
언리얼 공식 문서
https://docs.unrealengine.com/4.27/ko/ProgrammingAndScripting/Blueprints/UserGuide/Functions/