2011-02-27 11 views
4

私はこれをやるためのもっと奇妙な方法があることは知っていますが、なぜこのコードは機能しませんか? (ほとんどの場合、ちょうどx += 2の最初の試みはなぜ機能しないのですか?)これらはまったく変わったものですか?(少なくともScalaの新人のために)エラーメッセージimplicit def魔法は正しく機能していませんか?なぜ+ =はリストでは機能しませんか?

scala> var x: List[Int] = List(1) 
x: List[Int] = List(1) 

scala> x += 2 
<console>:7: error: type mismatch; 
found : Int(2) 
required: String 
     x += 2 
      ^

scala> x += "2" 
<console>:7: error: type mismatch; 
found : java.lang.String 
required: List[Int] 
     x += "2" 
     ^

scala> x += List(2) 
<console>:7: error: type mismatch; 
found : List[Int] 
required: String 
     x += List(2) 

答えて

10

誤った演算子を使用しています。あなたが:+なく+を使用する必要があり、コレクションに追加する

。これは、文字列に連結するために+を使用してJavaの動作をミラーリングしようとするときに発生する問題のためです。

scala> var x: List[Int] = List(1) 
x: List[Int] = List(1) 

scala> x :+= 2 

scala> x 
res1: List[Int] = List(1, 2) 

先頭に追加する場合は、+:も使用できます。

2

Scala APIのListをご覧ください。要素をリストに追加する方法は次のとおりです。

2 +: x 

x :+ 2 

2 :: x 
関連する問題