2015-10-23 4 views
0

Вывод ниже:Использование _ при вызове метода

getNum(_); 
    getNum(3); 

    def getNum(num: Int) { 
    println("Num is " + num) 
    } 

является

Num is 3 

Почему getNum(_); не вызывается? Как используется _?

+1

'GetNum (_)' возвращает новую функцию. Так как ваш код не сохраняет или не вызывает новую функцию, он отбрасывается. – jwvh

+0

В дополнение к ответу Педро я рекомендую прочитать http://learnyouahaskell.com/higher-order-functions. –

ответ

6

Что вы ожидаете от этого? getNum(null)?

The getNum(_); переводится на, что-то вроде:

{ x:Int => getNum(x) } 

который является анонимной функции и само значение.

Вы могли бы сделать, например:

val f = getNum(_) 
f(42) 

Тогда вы увидите:

Num is 42 
+0

вы, вероятно, увидите 'Num is 42': D –

+0

Хе-хе, хорошая точка. – pedrofurla

1

_ используется для частичного применения функции. Частичное применение функции создает другую функцию с некоторыми уже введенными ее параметрами.

val f = getNum(_) // partially apply 
f(3) // apply the function 
Смежные вопросы