子字符串到字符的比较在 Julia 1.0 中违反直觉



我是Julia语言的新手,在将子字符串与字符进行比较时看到一些奇怪的行为。

我认为下面的第一个比较至少应该评估为true.

有人可以告诉我如何比较这两个值并(奖金(指出为什么会出现这种违反直觉的结果吗?

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

sq[1]返回一个Char。使用sq[1:1]获取String

您可以在 REPL 中查看sq[1]返回的内容:

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

所以你有:

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

因为这CharChar.

另一方面,sq[1:1]您拥有:

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

此行为的原因是字符串被视为集合。同样,如果您有一个数组x = [1,2,3]则您不希望该数组x[1] == [1]而是x[1] == 1

最新更新