在Julia 1.0中子字符串与字符比较违反直觉的结果

时间:2018-09-28 12:24:02

标签: julia

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

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

有人可以告诉我如何比较这两个值,(奖励)指出为什么这种反直觉的结果是正确的吗?

julia> sq = "abcd"

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

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

1 个答案:

答案 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

这是将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