질문과 같습니다.`() => Unit '은 무엇을 의미합니까?
이 내용은 콜백 기능을 저장하는 데 사용 된 List[() => Unit]
에서 발견되었습니다.
나는 List[type]
을 이해하고 Unit
은 아무것도 반환하지 않는 함수의 반환 유형입니다.
질문과 같습니다.`() => Unit '은 무엇을 의미합니까?
이 내용은 콜백 기능을 저장하는 데 사용 된 List[() => Unit]
에서 발견되었습니다.
나는 List[type]
을 이해하고 Unit
은 아무것도 반환하지 않는 함수의 반환 유형입니다.
(T1,...,Tn) => T
는 Tn
통해 T1
유형의 매개 변수를 입력 T
를 반환하는 함수의 형태이다. 따라서 () => Unit
은 매개 변수를 사용하지 않고 반환 유형 Unit이있는 함수 유형입니다. 따라서 List[() => Unit]
은 이러한 기능을 포함하는 목록 유형입니다.
먼저 기능 목록이 있습니다. 각 함수는 매개 변수를 사용하지 않습니다 (닫힌 괄호는 ()
을 의미 함). void와 비슷한 결과가없는 값인 Unit
을 반환합니다.
순수 함수 세계에서는 아무 것도 취하지 않고 아무것도 반환하지 않기 때문에 ()=>Unit
유형의 함수는 쓸모가 없습니다. 그러나 스칼라는 순수 함수 언어가 아닙니다. 그것은 부작용이 있습니다. 유용하게 사용하려면 목록의 함수에 반드시 부작용이 있어야합니다. 콜백 함수이기 때문에 언제 발동하는지에 대해서도 알고 있습니다.
"T1 ~ Tn 유형의 매개 변수"이므로 'f (T1) : Unit', 'f (T2) : Unit'과 같은 함수는 해당 목록에 유효한 유형입니까? 'f (T1, T2)'와 같은 것은 어떨까요? – aitchnyu
@aitchnyu 아니요. 목록의 유형이 List [(T1, T2) => Unit] 인 경우이 목록에는 두 개의 매개 변수 (첫 번째 유형은 T1 유형이고 두 번째는 T2 임)와 반환 유형 Unit . 따라서'f (x : T1, y : T2) : Unit'으로 정의 된 함수를 저장할 수는 있지만'f (x : T1)'또는'f (y : T2)'로 정의 된 함수는 저장할 수 없습니다. 마찬가지로'List [() => Unit] 타입의리스트는 매개 변수를 정확히 취하지 않는 함수 만 저장합니다. – sepp2k