Julia 1.0中的子字符串到字符比较违反直觉
我不熟悉Julia语言,在比较子字符串和角色时看到一些奇怪的行为 我认为,至少下面的第一个比较结果应该是Julia 1.0中的子字符串到字符比较违反直觉,julia,Julia,我不熟悉Julia语言,在比较子字符串和角色时看到一些奇怪的行为 我认为,至少下面的第一个比较结果应该是true 有人能告诉我如何比较这两个值,并(奖金)告诉我为什么会出现这种违反直觉的结果吗 julia> sq = "abcd" julia> sq[1] == "a" false julia> isequal(sq[1],"a") false sq[1]返回一个Char。使用sq[1:1]获取字符串 您可以在REPL中检查sq[1]返回的内容: julia> sq
true
有人能告诉我如何比较这两个值,并(奖金)告诉我为什么会出现这种违反直觉的结果吗
julia> sq = "abcd"
julia> sq[1] == "a"
false
julia> isequal(sq[1],"a")
false
sq[1]
返回一个Char
。使用sq[1:1]
获取字符串
您可以在REPL中检查sq[1]
返回的内容:
julia> sq[1]
'a': ASCII/Unicode U+0061 (category Ll: Letter, lowercase)
所以你有:
julia> sq[1] == 'a'
true
julia> sq[1:1]
"a"
julia> sq[1:1] == "a"
true
这将Char
与Char
进行比较
另一方面,使用sq[1:1]
您有:
julia> sq[1] == 'a'
true
julia> sq[1:1]
"a"
julia> sq[1:1] == "a"
true
此行为的原因是字符串被视为集合。类似地,如果你有一个数组x=[1,2,3]
,你不会期望x[1]=[1]
,而是x[1]==1
完美-谢谢-我太习惯python世界了,“A”
和'A'
的意思是一样的!朱莉娅的差异是显著的。创建新的字符串
会分配内存,而创建字符
则不会分配内存,因此在热循环中会更快。很高兴知道这一点。