这有效
def func(f: => Int) = f
这不是(例如内部课程)
type EmptyFunct = => Int
或
type EmptyFunct = (=> Int)
Scala版本2.9 两个问题:
答案 0 :(得分:12)
=> Int不是没有参数的函数,它是一个带有名称传递约定的Int参数。 (当然,这是相当好的一点,因为它通过传递没有参数的函数来实现)。
没有参数的函数写为() => Int
。你可以做type EmptyFunct = () => Int
。
这不是一种类型。在func里面,f将被输入为Int。类型为()=>的参数Int不会。
def func(f: => Int) = f *2
func(:=> Int)Int
但是
def func(f: () => Int) : Int = f*2
错误:值*不是()=>的成员INT
答案 1 :(得分:3)
您应该使用Function0
在第一种情况下它不起作用,因为你声明了一个非参数Function但是因为你指出该参数是按名称调用的。
答案 2 :(得分:0)
我在方法中看不到多少意义,返回一个没有参数调用的int。要么它返回一个常量,所以你可以使用常量,或者它会使用var?
那么让我们来看看var:
var k = 10
val fi = List (() => k * 2, () => k - 2)
val n = fi(0)
n.apply
k = 11
n.apply
结果是20,然后是22.