我是Julia语言的新手,在比较子字符串和字符时看到一些奇怪的行为。
我认为至少下面的第一个比较应该评估为true
。
有人可以告诉我如何比较这两个值,(奖励)指出为什么这种反直觉的结果是正确的吗?
julia> sq = "abcd"
julia> sq[1] == "a"
false
julia> isequal(sq[1],"a")
false
答案 0 :(得分:7)
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
。