Вывод ниже:Использование _ при вызове метода
getNum(_);
getNum(3);
def getNum(num: Int) {
println("Num is " + num)
}
является
Num is 3
Почему getNum(_);
не вызывается? Как используется _
?
Вывод ниже:Использование _ при вызове метода
getNum(_);
getNum(3);
def getNum(num: Int) {
println("Num is " + num)
}
является
Num is 3
Почему getNum(_);
не вызывается? Как используется _
?
Что вы ожидаете от этого? getNum(null)
?
The getNum(_);
переводится на, что-то вроде:
{ x:Int => getNum(x) }
который является анонимной функции и само значение.
Вы могли бы сделать, например:
val f = getNum(_)
f(42)
Тогда вы увидите:
Num is 42
вы, вероятно, увидите 'Num is 42': D –
Хе-хе, хорошая точка. – pedrofurla
_
используется для частичного применения функции. Частичное применение функции создает другую функцию с некоторыми уже введенными ее параметрами.
val f = getNum(_) // partially apply
f(3) // apply the function
'GetNum (_)' возвращает новую функцию. Так как ваш код не сохраняет или не вызывает новую функцию, он отбрасывается. – jwvh
В дополнение к ответу Педро я рекомендую прочитать http://learnyouahaskell.com/higher-order-functions. –