Я новичок в Scala, ниже три функции декларации, которые путая мне:Scala: Разница между декларациями функций
Первые
scala> def sum = (a: Int, b: Int) => a + b
sum: (Int, Int) => Int
Второй
scala> def sum (a: Int, b: Int) = a + b
sum: (a: Int, b: Int)Int
Третий
scala> val sum = (a: Int, b: Int) => a + b
sum: (Int, Int) => Int = <function2>
Я знаю, что второй метод, третий - это функция буква. Мое замешательство с первым объявлением, это нормальная функция или это какой-то другой синтаксис, который я не понимаю? Было бы полезно получить объяснение.
EDIT
Кроме того, когда я пытаюсь создать частично применяться функции с использованием первого заявления я получаю это:
scala> val anotherSum = sum _
anotherSum:() => (Int, Int) => Int = <function0>
Что я ожидал типа Function2
, как sum
имеет 2 параметра ,
Надеюсь, что это поможет: http://www.tutorialspoint.com/scala/scala_closures.htm. Копайте вокруг закрытий scala ,, – Pavel
«Я знаю, что вторая является нормальной функцией» - Нет, второй - это метод, а не функция. Первый - также метод (хотя и тот, который возвращает функцию). Только третья функция. –
@ JörgWMittag спасибо, я обновил свой вопрос. –