我是scala的新手,并且只是玩弄了几个概念,但却陷入了困境之中。
如果我创建一个类似
的方法def sample(value:Int) = {(x:Int)=>x+1}
这适用于Scala,可以作为sample(100)
进行测试,但是我无法理解这里的方法和文字是如何被标记的。有人可以解释究竟发生了什么吗?
答案 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
添加到它