使用函数文字创建的Scala方法

时间:2016-12-06 20:39:38

标签: scala

我是scala的新手,并且只是玩弄了几个概念,但却陷入了困境之中。

如果我创建一个类似

的方法
def sample(value:Int) = {(x:Int)=>x+1}

这适用于Scala,可以作为sample(100)进行测试,但是我无法理解这里的方法和文字是如何被标记的。有人可以解释究竟发生了什么吗?

1 个答案:

答案 0 :(得分:5)

此处的参数value从未使用过,因此是多余的。方法sample()返回一个函数,该函数接受一个整数参数(被丢弃),然后将其加1。所以你得到:

scala> def sample(value:Int) = { (x:Int) => x + 1 }
sample: (value: Int)Int => Int

scala> sample(100)
res2: Int => Int = <function1>

scala> sample(100)(10)
res3: Int = 11

scala> val f = sample(99)
f: Int => Int = <function1>

scala> f(1)
res4: Int = 2

您可以通过以下方式使用value参数:

scala> def plusX(value:Int) = { (x:Int) => x + value}
plusX: (value: Int)Int => Int

scala> val plus10 = plusX(10)
plus10: Int => Int = <function1>

scala> plus10(15)
res7: Int = 25

现在plusX创建一个函数,它接受一个整数并将值value添加到它