스칼라의 익명 기능 내부에 값을 결합하기위한 구문 설탕이 있습니까?
-
08-07-2019 - |
문제
글쓰기 대신
((x: Double) => (((y: Double) => y*y))(x+x))(3)
나는 같은 것을 쓰고 싶다
((x: Double) => let y=x+x in y*y)(3)
스칼라에 이런 종류의 구문 설탕과 같은 것이 있습니까?
해결책
실제로 : 그것은 "라고 불립니다."val
". :-)
({ x: Double =>
val y = x + x
y * y
})(3)
버팀대는 물론 선택 사항입니다. 기능을 정의 할 때 괄호보다 선호합니다 (결국 LISP가 아닙니다). 그만큼 val
키워드는 현재 어휘 범위 내에서 새로운 바인딩을 정의합니다. Scala는 LISP 및 ML과 같은 언어와 달리 현지인들이 자신의 범위를 정의하도록 강요하지 않습니다.
실제로, var
또한 모든 범위 내에서 작동하지만 사용하는 것은 나쁜 스타일로 간주됩니다.
다른 팁
좋아, 여기에 바인딩이있는 하나의 라이너가 있습니다.
({ x:Double => val y = x + x; y * y })(3)
건배
제휴하지 않습니다 StackOverflow