我是 Julia 语言的新手,在将子字符串与字符进行比较时看到了一些奇怪的行为。
我认为至少下面的第一个比较应该评估为 true
.
有人可以告诉我如何比较这两个值并(奖励)指出为什么会出现这种违反直觉的结果?
julia> sq = "abcd"
julia> sq[1] == "a"
false
julia> isequal(sq[1],"a")
false
最佳答案
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
.
关于julia - Julia 1.0 中的子字符串与字符比较违反直觉,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52555271/