Scala 为什么';下划线在这里不起作用吗?

Scala 为什么';下划线在这里不起作用吗?,scala,Scala,scala新手,不知道为什么下划线在下面的最后一行不起作用,而第3行的“for”循环语法效果很好。顺便说一句,Leaf是一个case类,可以接受(Char,Int)来应用/构造。 谢谢 val chars:(List[Char])=List('a','b') 变量leaves:ListBuffer[Leaf]=ListBuffer() 对于(c而言,表示法的规则是这样的:Leaf(\u1)相当于x=>Leaf(x,1),因此leaves.foreach(leaves.append(Leaf(\u

scala新手,不知道为什么下划线在下面的最后一行不起作用,而第3行的“for”循环语法效果很好。顺便说一句,Leaf是一个case类,可以接受(Char,Int)来应用/构造。 谢谢

val chars:(List[Char])=List('a','b')
变量leaves:ListBuffer[Leaf]=ListBuffer()

对于(c而言,
表示法的规则是这样的:
Leaf(\u1)
相当于
x=>Leaf(x,1)
,因此
leaves.foreach(leaves.append(Leaf(\u1))
相当于
leaves.foreach(leaves.append(x=>Leaf(x,1)))
。这是一个错误,因为
离开。append
不使用函数,也因为
foreach
使用函数


您需要的是
leaves.foreach(x=>leaves.append(Leaf(x,1)))
,它为
foreach
提供了一个函数。然而,我希望这仍然不起作用,因为
x
将具有类型
Leaf
,并且我希望您不能将一片叶子包裹在另一片叶子上。

表示法的规则是这样的:
Leaf(\u1)
等同于
x=>Leaf(x,1)
,因此
leaves.foreach(leaves.append(Leaf(uu,1))
相当于
leaves.foreach(leaves.append(x=>Leaf(x,1))
。这是一个错误,因为
leaves.append
不使用函数,也因为
foreach
使用函数

您需要的是
leaves.foreach(x=>leaves.append(Leaf(x,1)))
,它为
foreach
提供了一个函数。但是我希望这仍然不起作用,因为
x
将具有类型
Leaf
,并且我希望您不能将一片叶子包裹在另一片叶子上。

欢迎这样做!请回答您的问题并添加
Leaf
的定义以及您收到的确切错误消息。欢迎访问因此,请回答您的问题并添加
Leaf
的定义以及您收到的确切错误消息。
  val chars: (List[Char]) = List('a', 'b')
  var leaves: ListBuffer[Leaf] = ListBuffer()

  for (c <- chars) leaves.append(Leaf(c, 1))//ok
  leaves.foreach(leaves.append(Leaf(_, 1)))//COMPILE ERROR