2014-01-03 2 views
1

В scala я видел, как некоторые функции получают другую функцию в качестве параметров. Может кто-то сказать мне, как я могу вызвать эту функцию.Вызвать аргумент функции в scala

Если

function A needs a function as a parameter. 

и

I pass B as an argument to function A. 

Может кто-то пожалуйста, скажите мне тогда how I can invoke, or use the B, inside A function.

+1

Пожалуйста, будьте более конкретными. Покажите одну или две такие функции, которые вы хотите вызвать, поскольку вы можете неправильно интерпретировать то, что видите. –

ответ

4
scala> def foo[A, R](func: A => R, arg: A): R = func(arg) 
foo: [A, R](func: A => R, arg: A)R 

scala> def bar(x: Int): Int = x + 1 
bar: (x: Int)Int 

scala> foo(bar, 42) 
res1: Int = 43 

scala> def nothing(x: Int): Unit = println("Yo: " + x) 
nothing: (x: Int)Unit 

scala> foo(nothing, 42) 
Yo: 42 
+0

спасибо за быстрый ответ. Можете ли вы рассказать мне, как это работает, когда тип возврата 1.the - это номер тип параметра 2.the us Единица – ddarz4u

+1

@ user3081714: 'Unit' является обычным типом системы' scala'. Это синглтон. Вы должны использовать '()', чтобы получить единственный экземпляр 'Unit':' def foo (func: Unit => Unit): Unit = func (()) '. Обратите внимание: в этом случае вы можете просто использовать функцию без аргументов (список пустых аргументов): 'def foo (func:() => Unit): Unit = func()'. – senia

Смежные вопросы