저는 현재 Scala를 배우고 있으며 _
와일드 카드를 사용 하여 익명 함수를 가지고 놀았습니다 . 이것은 나에게 의미가 있습니다.
// Creates function operation(a, b, c) => a + (b / c)
var operation = (_:Double) + (_:Double) / (_:Double)
내가 얻지 못하는 것은 operation
대신 return 으로 변경하는 방법 (a + b) / c
입니다. 다음 중 어느 것도 작동하지 않습니다.
// Attempting to create function operation(a, b, c) => (a + b) / c
var operation = ((_:Double) + (_:Double)) / (_:Double)
// error: value / is not a member of (Double, Double) => Double
var operation = ((_:Double) + (_:Double)).toDouble / (_:Double)
// error: value toDouble is not a member of (Double, Double) => Double
(_:Double) + (_:Double)
괄호 안에 넣으면 (Double, Double) => Double
함수 유형으로 변환 되기 때문이라고 생각 합니다. 그러나 실제로 작업 순서를 어떻게 변경합니까? 이것이 가능할까요?
+
Scala의 또 다른 메서드 이므로 .
다음을 사용하여 다른 메서드처럼 호출 할 수 있습니다 .
var operation = (_: Double).+(_: Double) / (_: Double)
그러나 제 생각에는 밑줄은 (에서와 같이 foo.reduce(_ ^ _)
) 작고 중요하지 않은 함수에만 사용해야합니다 . 유형 지정을 사용하고 구문으로 게임을해야하는 경우 해당 함수를로 바꾸 (a: Double, b: Double, c: Double) => (a + b) / c
거나 더 나은 방법으로 만드는 것이 좋습니다. 또 다른 한가지-Scala에서는 val
(변경 불가능)이 var
(변경 가능) 보다 선호 됩니다. 가능하면 전자를 사용하십시오.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다