2017-09-25 6 views
0

3行目の 'for'ループ構文がうまくいきますが、なぜスカラーになって、下の行でアンダースコアが機能しないのか不思議です。 BTWリーフはケースクラスであり、適用/構築するには(Char、Int)を受け入れることができます。 ありがとう!ここでアンダースコアが機能しないのはなぜですか?

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 
+2

ようこそ!あなたの質問を[編集]し、 'Leaf'の定義と* exact *エラーメッセージを追加してください。 –

答えて

4

_表記のルールは、Leaf(_, 1)x => Leaf(x, 1)と同等であるので、leaves.foreach(leaves.append(Leaf(_, 1)))leaves.foreach(leaves.append(x => Leaf(x, 1)))と同等であるようなものです。 leaves.appendは機能を持たないし、foreachもあるので、これはエラーです。

leaves.foreach(x => leaves.append(Leaf(x, 1)))は、foreachに機能を与えます。しかし、私はこれはまだxタイプLeafを持っていたと私はあなたが別の葉の周りに葉をラップすることはできないと期待したいので、これは動作しないと期待したいと思います。

関連する問題