如何为Scala中的值分配函数?

时间:2012-03-16 20:17:34

标签: scala

在Scala中,如何将特定签名的函数分配给适当类型的值?

def foo = println("foo")
def bar = println("bar")
val fnRef : ()=>Unit = //the function named foo or the function named bar

2 个答案:

答案 0 :(得分:2)

虽然我觉得这是一个不可原谅的人,可以将此作为正式答案提交,但我是根据OP的要求这样做的。

这个问题可以这样解决:

def foo = println("foo")
val fnRef = () => foo
或者,正如其他一些勇敢的灵魂在删除他的回答之前说的那样:

def foo = println("foo")
val fnRef = foo _

第二个可能是稍微好一点,因为我的(前者)是温和的hacky并且实际上创建了一个全新的函数,它在应用时简单地调用现有函数,而后者基本上是部分/延迟应用的现有函数因为,虽然在语义上相同,但后者更像惯用Scala(正如Rex Kerr指出的那样)。

答案 1 :(得分:0)

foobar不是函数,它们是方法。您不能将方法分配给名称,因为方法不是对象。