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