我是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
因为这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
。