Scala имеет
- методы (по умолчанию
def
это метод) и - функции
И они не одинаковы.
Взяв в качестве примера java-методы, вы не можете назначать методы переменной без оценки метода.Но вы можете сделать это с помощью функции, и для этого в scala определите sum
как функцию.
scala> def sum: (Int, Int, Int) => Int = (a, b, c) => a + b + c
sum: (Int, Int, Int) => Int
scala> val sumVal = sum
sumVal: (Int, Int, Int) => Int = $$Lambda$912/0x0000000801667840@716f94c1
scala> sumVal(1, 2, 3)
res1: Int = 6
Более длинная версия определения функции -
scala> def sum = new Function3[Int, Int, Int, Int] {
| def apply(a: Int, b: Int, c: Int): Int = a +b + c
| }
sum: (Int, Int, Int) => Int
scala> val sumVal = sum
sumVal: (Int, Int, Int) => Int = <function3>
scala> sumVal(1, 2, 3)
res2: Int = 6