拿:
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))
^
不太有帮助。这里发生了什么?我了解下划线不能用于表示多个参数,但它在这里仅用作一个参数的替代。我不明白为什么编译器不会接受这个,我也不明白它对方法 ::: 的引用,它没有被调用。