出于兴趣,为什么这在 Scala 中有效:
val exceptions = List[Char]('+')
assertTrue(exceptions.contains('+'))
但这不是
val exceptions = new Array[Char]('+')
assertTrue(exceptions.contains('+'))
出于兴趣,为什么这在 Scala 中有效:
val exceptions = List[Char]('+')
assertTrue(exceptions.contains('+'))
但这不是
val exceptions = new Array[Char]('+')
assertTrue(exceptions.contains('+'))
因为你写了新的ArrayChar。这样做,参数是数组的大小,而不幸的是,'+' 被转换为 int 以给出大小。并且返回的数组充满了 Char(0)。
您应该这样做Array[Char]('+')
,'+'
然后将是数组中的单个元素。
在 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
情况。