테이크 _의 한계 : 그와스칼라 :
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))
^
은별로 도움이되지 않습니다. 여기서 무슨 일이 일어나고있는거야? 나는 하나 이상의 매개 변수를 표현하기 위해 밑줄을 사용할 수는 없지만 여기서는 하나의 매개 변수에 대해서만 사용하고 있다는 것을 이해합니다. 나는 컴파일러가 이것을 받아 들일 수없는 이유를 모르거나 호출되지 않는 메소드 :::에 대한 참조를 이해하지 못한다.