2017-07-01 80 views
0

我注意到=号,但这里的实际区别是什么?有人可以解释一下吗?为什么func1的返回类型是Unit,而func2是Int?

// FUNC1

DEF func1的(X:INT; OP:INT =>内部){ OP(x)的 }

func1的:(X:诠释,同前: INT =>内部)单位

// FUNC2

DEF FUNC2(X:INT,OP:INT =>强度)= { OP(x)的 }

FUNC2:(X:诠释,OP:INT =>内部)诠释

+0

喜阳光充足,欢迎来SO。请花一点时间仔细研究以提供更好的格式化问题:https://stackoverflow.com/help/how-to-ask – petezurich

+2

可能的重复[何时在Scala方法声明中使用等号]?(https: //stackoverflow.com/questions/944111/when-to-use-the-equals-sign-in-a-scala-method-declaration) – dveim

+0

这是_is_“实际差异”。 – Dima

回答

1

在Scala中,当您在高清使用 “=” 号,它将返回的东西。 所以在你的第一个函数中,你没有使用= sign,所以返回类型是Unit(void in java)。

对于第二个函数,它返回int是因为在Scala中,你可以做这样的事情:

def sum(x:Int, y:Int) = { 
    z:Int = x + y 
    z 
} 

println(sum(3, 5)) 

//output = 8 

尽管不使用这个词回报ž,它仍然会返回最后一个变量的函数。因此,第二个函数将返回int,它长的形式看起来是这样的:

def func2(x: Int, op: Int => Int):Int = { 
    op(x) //this is the last value and it will be returned 
} 

缺少等号(=)总是返回单位(在Java中无效)

相关问题