Scala中部分应用的函数

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(_)))

ped*_*rla 5

这个案子很沮丧

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 => ?函数.

在对比,在两种情况下,第一个样品你喂养foreachInt => Unit,而在两种情况下,第二样品中你喂养foreachUnit.