z odsetek dlaczego to działa w Scala:lista zawiera Scala vs tablica zawiera
val exceptions = List[Char]('+')
assertTrue(exceptions.contains('+'))
ale to nie
val exceptions = new Array[Char]('+')
assertTrue(exceptions.contains('+'))
z odsetek dlaczego to działa w Scala:lista zawiera Scala vs tablica zawiera
val exceptions = List[Char]('+')
assertTrue(exceptions.contains('+'))
ale to nie
val exceptions = new Array[Char]('+')
assertTrue(exceptions.contains('+'))
Bo napisałeś nowy ArrayChar. Robiąc to, argumentem jest rozmiar tablicy, a "+" jest raczej niestety konwertowane na int, by nadać rozmiar. A zwrócona tablica jest pełna Char (0).
Powinieneś po prostu zrobić Array[Char]('+')
, '+'
byłby wtedy pojedynczym elementem w Tablicy.
Spróbuj w REPL, który sprawia, że odpowiedź oczywista:
scala> val exceptions = new Array[Char]('+')
exceptions: Array[Char] = Array(, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , )
+
ma promocji char-to-int.
scala> val exceptions = Array[Char]('+')
exceptions: Array[Char] = Array(+)
scala> exceptions.contains('+')
res3: Boolean = true
jest odpowiednikiem przypadku List
.
To byłby świetny Scala Puzzler! – soc