取った:
var data = List[(DateTime, Double)]()
val pairs = io.Source.fromInputStream(getClass.getResourceAsStream("/data.csv")).getLines().map(_.split(","))
pairs.foreach(pair => data ::= (dateFormatter.parseDateTime(pair(0)), pair(1).toDouble))
問題ありません。次のように、ペアを宣言する代わりにパラメーター プレースホルダーを使用することにした場合:
pairs.foreach(data ::= (dateFormatter.parseDateTime(_(0)), _(1).toDouble))
コンパイラはそれを受け取りません。さらに、エラー:
too many arguments for method ::: (x: B)List[B]
pairs.foreach(data ::= (dateFormatter.parseDateTime(_(0)), _(1).toDouble))
^
あまり役に立ちません。ここで何が起こっているのですか?アンダースコアを使用して複数のパラメーターを表すことはできないことは理解していますが、ここでは 1 つのパラメーターの代用としてのみ使用されています。コンパイラがこれを受け入れない理由がわかりません。また、呼び出されていないメソッド ::: への参照もわかりません。