Я прочитал вопрос Разница между методом и функцией в Scala и много статей о различиях между методом и функцией.У меня появилось ощущение, что «метод» - это просто «именованная функция», определенная как метод в классе, признаке или объекте.«Функция» представляет такие вещи, как «анонимная функция», «литерал функции» или «объект функции» в этих статьях.Свидетельство можно найти в книге «Программирование в Scala http://www.artima.com/shop/programming_in_scala_2ed», стр. 141, раздел 8.1, «Самый распространенный способ определения функции - это член некоторого объекта. Такая функция называется методом».
Однако, когда я проверил справочник по языку Scala http://www.scala -lang.org / documents / files / ScalaReference.pdf , существуют такие понятия, как именованный метод.На странице 91, раздел 6.20. Выражения возврата: «Возвращаемое выражение возврата e должно происходить внутри тела какого-либо включающего именованного метода или функции».Вы также можете найти термин «именованная функция» на той же странице и в других местах.
Итак, мой вопрос в Scala: относятся ли метод, именованный метод и именованная функция к одному и тому же понятию?Где вы получаете определение именованной функции?
В коде List(1, 2).map(_ + 1)
исходное выражение _ + 1
является именованным методом, затем метод преобразуется в функцию.Что это за функция, анонимная функция, объект функции, именованная функция?
В моем понимании, Scala имеет только два типа функций: именованная функция, которая является методом;анонимная функция, которая является литералом функции.Функциональный литерал скомпилирован в функциональный объект функции FunctionN для использования в чистом объектно-ориентированном мире Scala.
Однако для обычного именованного funciton / метода, такого как _ + 1
в приведенном выше коде, почему Scala преобразует его в другой функциональный объект?