我注意到=符号,但这里的实际差异是什么?有人可以解释一下吗?
// FUNC1
def func1(x:Int,op:Int => Int){ OP(x)的 }
func1:(x:Int,op:Int => Int)单位
// FUNC2
def func2(x:Int,op:Int => Int)= { OP(x)的 }
func2:(x:Int,op:Int => Int)Int
答案 0 :(得分:1)
在scala中,当你使用" ="登录def,它会返回一些东西。 所以在你的第一个函数中,你没有使用=符号,因此返回类型将是Unit(java中的void)。
对于第二个函数,它返回Int是因为在Scala中你可以这样做:
def sum(x:Int, y:Int) = {
z:Int = x + y
z
}
println(sum(3, 5))
//output = 8
尽管没有使用返回z 这个词,它仍会返回函数中的最后一个变量。因此第二个函数将返回Int,其长形看起来像这样:
def func2(x: Int, op: Int => Int):Int = {
op(x) //this is the last value and it will be returned
}
missing =符号将始终返回Unit(java中为void)