스칼라 코드를 작성하는 동안 코드를 컴파일 할 때 이상한 오류 메시지가 표시됩니다. 나는 코드를 훨씬 단순한 것으로 분해했다 (의미 론적 관점에서 전혀 의미가 없지만 여전히 오류를 보여줌).for 루프를 컴파일 할 때 이상한 오류가 발생했습니다.
scala> :paste
// Entering paste mode (ctrl-D to finish)
import scala.collection.mutable.ListBuffer
val map = scala.collection.mutable.Map[Int, ListBuffer[Int]]()
for (i <- 1 to 2) {
map.get(0) match {
case None => map += (1 -> ListBuffer[Int](1))
case Some(l: ListBuffer[Int]) => l += i
}
}
// Exiting paste mode, now interpreting.
<console>:12: error: type arguments [Any] do not conform to trait Cloneable's t
pe parameter bounds [+A <: AnyRef]
for (i <- 1 to 2) {
^
for 루프의 끝에서 여분의 줄을 추가, 코드가 작동합니다
scala> :paste
// Entering paste mode (ctrl-D to finish)
import scala.collection.mutable.ListBuffer
val map = scala.collection.mutable.Map[Int, ListBuffer[Int]]()
for (i <- 1 to 2) {
map.get(0) match {
case None => map += (1 -> ListBuffer[Int](1))
case Some(l: ListBuffer[Int]) => l += i
}
1 // <- With this line it works
}
// Exiting paste mode, now interpreting.
warning: there were 1 unchecked warnings; re-run with -unchecked for details
import scala.collection.mutable.ListBuffer
map: scala.collection.mutable.Map[Int,scala.collection.mutable.ListBuffer[Int]]
= Map(1 -> ListBuffer(1))
것 같아요,이 경기의 경우 문장의 반환 값 함께 할 수있는 뭔가가 . 그러나 나는 스칼라 전문가가 아니기 때문에이 오류 메시지의 이유와 내가 잘못하고있는 이유를 알아낼 수 있습니다. 더 현명한 누군가가 여기에서 도울 수 있기를 바랍니다.
오류 메시지의 이유는 무엇입니까? match-case-statement에 무슨 문제가 있습니까?
UPDATE : 당신은 행동에 this bug을보고있는
이것은 아마도 버그 일 수 있습니다. 2.10에서는 잘 작동합니다. – sschaef