다음 코드 조각에서 (F : => T)은 무엇을 의미합니까?스칼라,이 함수 정의는 무엇을 의미합니까?
def func1[T](arg1: Int, arg2: String)(F: => T): func2[T]
감사
다음 코드 조각에서 (F : => T)은 무엇을 의미합니까?스칼라,이 함수 정의는 무엇을 의미합니까?
def func1[T](arg1: Int, arg2: String)(F: => T): func2[T]
감사
F
인수 이름입니다; => T
은 이름이 인 이라는 의미입니다.
T
이있을 것이다 자동 () => T
로 전환됩니다 :이 방법을 구현할 때
func1[String](0, x)(x + x) ===> func1[String](0, x)(() => x + x)
, 각 그것은 몇 가지 문법 설탕 기본적으로 해당 () => T
에의 F
을 사용하면 F()
가됩니다. 따라서 T
유형의 값은 매번 다시 계산됩니다.
물론,이 두 가지 사례 중 하나에 유용하다 : F
이 필요하지 않을 경우
;
F
에 의해 반환 된 값이 다른 호출간에 변경 될 수있는 경우.
또한 람다 변수를 사용하지 않고 중괄호 블록을 함수 인수로 메서드에 추가 할 수 있습니다. 이것을 사용하여 'while'루프의 구문을 시뮬레이션 할 수 있습니다. 필자는 개인적으로 벤치마킹에 사용했다 :'benchmarkTime (100) {someExpensiveFunction()}'('100'은 벤치 마크를 실행하는 횟수) – KChaloux
'F : => T'에서, 인수는 소문자 여야합니다 :'f : => T'는 타입과 혼동하지 말아야합니다. – maasg