Скажем, во-первых, у меня есть эта функция:В Scala есть функция, которая выполняет вызов по имени параметра, отличного от функции, которая принимает другую функцию в качестве параметра?
def number5()={
println("number 5 starting")
println("number 5 exiting")
5
}
И потом:
def giveMeCallByNameParameter(f: =>Int)={
println("starting")
f
println("exiting")
}
Когда я называю это:
giveMeCallByNameParameter(number5)
Я получаю этот результат:
starting
number 5 starting
number 5 exiting
exiting
А если у меня есть эта функция:
def giveMeAnotherFunction(f:()=>Int)={
println("starting")
f()
println("exiting")
}
И я это называю:
giveMeAnotherFunction(number5)
я получаю тот же результат:
starting
number 5 starting
number 5 exiting
exiting
Таким образом, они отличаются вообще? Помимо отличия от наличия или отсутствия скобки?
Если они не разные? Тогда почему у нас есть этот терминологический вызов по имени?
Примечание: это методы, а не функции. Фактически, одна из отличий между параметрами имени и параметрами, которые являются функциями, состоит в том, что функции не могут иметь параметры имени, только методы могут. –