scala中的这个测量结果是什么?

时间:2014-09-03 14:27:06

标签: function scala

我是scala的新手,今天我看到了一个我无法理解的函数定义:

def f(x: Int): Int = x
val func = (x: Int, y: Int, z: Int) => f(x)

那么在Scala中,定义func的语法是什么?对我来说,func只是一个函数接受三个参数:func: (Int, Int, Int) => Int = <function3>。为什么不将func定义为

def func(x: Int, y: Int, z: Int): Int = f(x)

这是出于效率的原因吗?因为我们只需要评估一次val。

1 个答案:

答案 0 :(得分:-1)

func被定义为一个包含该签名的函数的值,并使用这样的函数进行初始化。在将来的某个时间,在类方法中,您可以提供不同的功能。它将被调用为func(1,2,3)并根据在该时间点实际分配给func的函数返回结果。

这提供了替代子类中的方法的替代方法。例如,您可能有一个状态机实现,需要以不同的方式响应输入,具体取决于状态;这是通过改变接收函数的值来适当响应的可行方法。