我是Julia语言的新手,在将子字符串与字符进行比较时会看到一些奇怪的行为.
我认为下面的第一个比较,至少应该评估true.
有人可以告诉我如何比较这两个值,(奖金)指出我为什么这种违反直觉的结果是这样的?
julia> sq = "abcd"
julia> sq[1] == "a"
false
julia> isequal(sq[1],"a")
false
Run Code Online (Sandbox Code Playgroud)
sq[1]返回一个Char.用sq[1:1]得到String.
您可以查看sq[1]REPL中的返回值:
julia> sq[1]
'a': ASCII/Unicode U+0061 (category Ll: Letter, lowercase)
Run Code Online (Sandbox Code Playgroud)
所以你有了:
julia> sq[1] == 'a'
true
Run Code Online (Sandbox Code Playgroud)
因为这样比较Char对Char.
另一方面,sq[1:1]你有:
julia> sq[1:1]
"a"
julia> sq[1:1] == "a"
true
Run Code Online (Sandbox Code Playgroud)
这种行为的原因是字符串被视为集合.同样,如果你有一个数组,x = [1,2,3]你不要指望,x[1] == [1]而是x[1] == 1.
| 归档时间: |
|
| 查看次数: |
65 次 |
| 最近记录: |