6

興味深いことに、これが Scala で機能する理由は次のとおりです。

val exceptions = List[Char]('+')    
assertTrue(exceptions.contains('+'))

しかし、これはそうではありません

val exceptions = new Array[Char]('+')    
assertTrue(exceptions.contains('+'))
4

2 に答える 2

9

あなたが新しいArrayCharを書いたからです。そうすることで、引数は配列のサイズになり、'+' は残念ながらサイズを与えるために int に変換されます。そして、返された配列は Char(0) でいっぱいです。

するだけで、配列内の単一の要素になりますArray[Char]('+')'+'

于 2012-08-07T09:33:44.047 に答える
7

REPL を試してみてください。答えは明らかです。

scala> val exceptions = new Array[Char]('+')
exceptions: Array[Char] = Array( ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  )

+char から int への昇格があります。

scala> val exceptions = Array[Char]('+')
exceptions: Array[Char] = Array(+)

scala> exceptions.contains('+')
res3: Boolean = true

ケースと同等Listです。

于 2012-08-07T09:34:42.853 に答える