出于兴趣,为什么这在Scala中起作用:
val exceptions = List[Char]('+')
assertTrue(exceptions.contains('+'))
但这不是
val exceptions = new Array[Char]('+')
assertTrue(exceptions.contains('+'))
答案 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
个案。