Scala列表包含vs数组包含

时间:2012-08-07 09:27:39

标签: scala

出于兴趣,为什么这在Scala中起作用:

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

但这不是

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

2 个答案:

答案 0 :(得分:9)

因为你写了 ArrayChar。这样做,参数是数组的大小,而不幸的是,'+'被转换为int来给出大小。返回的数组充满了Char(0)。

您应该Array[Char]('+')'+'将成为数组中的单个元素。

答案 1 :(得分:7)

尝试使用REPL,这使答案显而易见:

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

+有char-to-int促销。

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

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

等同于List个案。