将类型转换为类型函数

时间:2013-09-13 08:15:33

标签: scala methods first-class-functions

是否可以将类型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)

但这并不是太干,或者说甚至可能都很干。

1 个答案:

答案 0 :(得分:2)

是的:bar(_.foo(_))在您的情况下。如果Scala没有足够的信息来推断参数类型(例如,如果你有bar[T1, T2](somef: (T1, T2) => Unit)),那么你可以改用(_: T).foo(_: U)之类的东西。