은 (2.9.2)이 내가 내가 성공적으로 통해이 일을 생각했다스칼라와 스칼라에서
() => Any
를 액세스 할 때 다른 가치를 제공하는 함수를 만들려고하고 무두질 이름/태닝 솔루션이 :
def byName(theValue : => Any)() : Any = theValue
val myHolder = byName(myValue)_
그래서 내 홀더는 올바른 유형이다. 그러나 나는이 카레 기능을 만드는 과정에서 이름 매개 변수가 평가된다는 것을 알게되었습니다. 다음과 같이하면 대신 작동합니다.
def byName(theValue : => Any) : Any =() => theValue
val myHolder = byName(myValue)
나는 currying 프로세스의 일부가 첫 번째 매개 변수 목록을 참조하고 해당 평가를 트리거한다고 결론을 내립니다. 아무도 그것을 확인하거나 왜 또는 여러 매개 변수 목록과 함께 이름 매개 변수를 사용하는 것에 관한 지침이 있는지 설명 할 수 있습니까?
나는 버그가 있다고 믿는다. https://issues.scala-lang.org/browse/SI-302 – Steve
잘 찾아 냈다. 코멘트에서 그것은 scala 2.10-M4에서 고정 된 것으로 보인다. –
완벽 - 설명해 주셔서 감사합니다. –