Scala LanguageФункция более высокого порядка

замечания

Scala делает все возможное, чтобы рассматривать методы и функции как синтаксически идентичные. Но под капотом они представляют собой разные понятия.

Метод является исполняемым кодом и не имеет представления значения.

Функция - это фактический экземпляр объекта типа Function1 (или аналогичный тип другой арности). Его код содержится в методе его apply . Фактически, он просто действует как ценность, которая может быть передана.

Кстати, способность рассматривать функции как ценности - это именно то, что подразумевается под языком, поддерживающим функции более высокого порядка. Экземпляры функций - это подход Scala к реализации этой функции.

Фактическая функция более высокого порядка - это функция, которая либо принимает значение функции в качестве аргумента, либо возвращает значение функции. Но в Scala, поскольку все операции являются методами, более общее представление о методах, которые принимают или возвращают параметры функции. Таким образом, map , как определено в Seq может считаться «функцией более высокого порядка» из-за того, что ее параметр является функцией, но это не буквально функция; это метод.

Функция более высокого порядка Связанные примеры