Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Julia 1.0中的子字符串到字符比较违反直觉_Julia - Fatal编程技术网

Julia 1.0中的子字符串到字符比较违反直觉

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

我不熟悉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[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'
的意思是一样的!朱莉娅的差异是显著的。创建新的
字符串
会分配内存,而创建
字符
则不会分配内存,因此在热循环中会更快。很高兴知道这一点。