任何人都可以解释一下这两种函数定义如何相互区别。它只是一种语法?或者事情比我想的要大......
方法1
def incriment(x:Int):Int = x+1
方法2
def incriment=(x:Int) =>x+1
答案 0 :(得分:1)
scala REPL是你的朋友,
第一个,只是一个将int作为输入并且返回int 作为返回类型的方法。
scala> def increment1(x:Int): Int = x + 1
increment1: (x: Int)Int
| |
input return type
必须为方法提供输入,
scala> increment1
<console>:12: error: missing arguments for method increment1;
follow this method with `_' if you want to treat it as a partially applied function
increment1
scala> increment1(89)
res3: Int = 90
第二个,是一个返回函数的方法,它接受int并返回int
scala> def increment2 = (x:Int) => x + 1
increment2: Int => Int
| |
func input func return type
//you can pass this function around,
scala> increment2
res5: Int => Int = <function1>
要调用函数,可以调用apply
方法。
scala> increment2.apply(89)
res7: Int = 90
// or you can simply pass parameter within paren, which will invoke `apply`
scala> increment2(89)
res4: Int = 90
答案 1 :(得分:1)
在Scala中,如果类型推断很简单,我们可以跳过返回类型。
第一种方法:
def increment(x: Int) : Int = x + 1
这是一个返回Integer的函数(递增整数参数)
但在第二种方法中:
def increment = (x:Int) =>x+1
这实际上是一个返回另一个函数的函数。 返回的函数可以由客户端调用整数并在响应中获得递增的整数
来调用答案 2 :(得分:0)
这两个功能完全不同。
重新。 1
def incriment(x: Int) : Int = x + 1
这只是一个返回Int
。
重新。 2
def incriment = (x: Int) => x+1
def incriment : (Int) => Int = (x:Int) => x+1
这个函数返回一个函数,该函数接受Int
并返回Int
((Int) => Int
)。我已经添加了类型注释以使事情变得清晰。 Scala允许您省略它,但有时建议添加它(例如,公共方法等)。