为什么func1的返回类型是Unit,而func2的返回类型是Int?

时间:2017-07-01 18:24:19

标签: scala

我注意到=符号,但这里的实际差异是什么?有人可以解释一下吗?

// 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

1 个答案:

答案 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)