Sha*_*lab 1 functional-programming scala partial-application
想知道您是否可以评论为什么以下两种情况的行为方式不同:
以下作品:
var la= List(12, 13 , 14 ,15);
var func = (x:Int) => println(x)
la.foreach(func) // 1
la.foreach(func(_)) // 2
Run Code Online (Sandbox Code Playgroud)
但以下不是:
var la= List(12, 13 , 14 ,15);
var func1 = (x:Int) => {
for (i <- 0 to x) yield i*2
} mkString
la.foreach(println(func1)) // similar to 1 above
la.foreach(println(func1(_))) // similar to 2 above
Run Code Online (Sandbox Code Playgroud)
错误:类型不匹配; 发现:所需单位:Int =>?la.foreach(的println(FUNC1(_)))
这个案子很沮丧
la.foreach(println(func1(_)))
Run Code Online (Sandbox Code Playgroud)
至
la.foreach(println(x => func1(x)))
Run Code Online (Sandbox Code Playgroud)
所以你传递函数println,print返回类型是Unit,foreach需要一些Int => ?函数.
在对比,在两种情况下,第一个样品你喂养foreach用Int => Unit,而在两种情况下,第二样品中你喂养foreach用Unit.