2013-09-13 4 views
0

Можно ли преобразовать метод по типу T в функцию типа T? Например, если у меня естьметод конвертации по типу к функции типа

case class T { 
    def foo(u : U) : Unit = ??? 
} 

позволяет передать Foo в качестве аргумента НЕКОЕГО в некотором роде

function bar(somef : (T, U) => Unit) 

До сих пор я вытащил его из вида, как так:

def foo_(t : T, u: U) = t.foo(u) 

но это еще не слишком СУХОЙ, или, возможно, даже МОЖЕТ.

ответ

2

Да: bar(_.foo(_)) в вашем случае. Если у Scala недостаточно информации для вывода типов аргументов (например, если у вас есть bar[T1, T2](somef: (T1, T2) => Unit)), вместо этого вы можете использовать что-то вроде (_: T).foo(_: U).

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