-
카테고리
-
세부 분야
프로그래밍 언어
-
해결 여부
해결됨
람다식과 함수형 프로그래밍
22.04.26 15:41 작성 조회수 204
0
안녕하세요!
학습 중 궁금한 내용이 있어 질문드립니다.
람다식을 사용 시 final 변수가 아니면 참조 시 오류가 발생한다고 하셨는데 그렇다면 람다식을 사용해 익명 클래스를 생성하는 것이 해당 함수가 부수 효과가 없는 함수라는 것을 보장해주는지 궁금합니다.
아니라면, 개발자가 직접 부수효과가 발생하지 않도록 신경써서 람다식을 작성해야 하는 것인가요?
감사합니다.
답변을 작성해보세요.
1
백기선
지식공유자2022.04.27
좋은 질문이네요. 람다식을 사용하면 final 변수 또는 "사실상"(effective) final 변수만 람다식 내부에서 참조할 수 있습니다.
람다식을 사용해서 "익명 클래스"를 생성하는 것은 아니구요. 해당 하는 타입의 객체를 만들 수는 있죠. 어디까지나 익명 클래스와 람다식은 다르니까요.
그리고 자바 특정 함수(Consumer)는 부수 효과가 있습니다. 자바에서는 함수라고해서 모두 부수 효과가 없는 것은 아닙니다.
https://docs.oracle.com/javase/8/docs/api/java/util/function/Consumer.html
Represents an operation that accepts a single input argument and returns no result. Unlike most other functional interfaces, Consumer is expected to operate via side-effects.
답변 1