Подстрока для сравнения символов противоречит интуитивным результатам в Julia 1.0 - PullRequest
0 голосов
/ 28 сентября 2018

Я новичок в языке Julia и вижу странное поведение при сравнении подстроки с символом.

Я думаю, что первое сравнение ниже, по крайней мере, должно оценивать как true.

Может ли кто-нибудь показать мне, как сравнить эти два значения и (бонус) указать мне, в чем причина этого нелогичного результата?

julia> sq = "abcd"

julia> sq[1] == "a"
false

julia> isequal(sq[1],"a")
false

1 Ответ

0 голосов
/ 28 сентября 2018

sq[1] возвращает Char.Используйте sq[1:1], чтобы получить String.

. Вы можете проверить, что sq[1] возвращает в REPL:

julia> sq[1]
'a': ASCII/Unicode U+0061 (category Ll: Letter, lowercase)

, поэтому у вас есть:

julia> sq[1] == 'a'
true

поскольку это сравнивает Char с Char.

, с другой стороны, с sq[1:1] у вас есть:

julia> sq[1:1]
"a"

julia> sq[1:1] == "a"
true

Причина такого поведения заключается в том, что строки рассматриваются как коллекции.Точно так же, если у вас есть массив x = [1,2,3], вы не ожидаете, что x[1] == [1], а скорее x[1] == 1.

...