Julia 朱莉娅!()无法将Char类型的对象“转换”为String类型的对象
我正在尝试向数组中添加字符串,如下所示:Julia 朱莉娅!()无法将Char类型的对象“转换”为String类型的对象,julia,Julia,我正在尝试向数组中添加字符串,如下所示: arry = String[] append!(arry, "test") 但我得到了以下错误: Cannot `convert` an object of type Char to an object of type String 为什么在添加字符串而不是字符时会出现此错误 (为了其他Julia新手的利益,在下面发布我自己的答案-任何有更多有用提示的人请加入!)我看不到你的答案,但这里有一个典型的模式 你可以推单个元素或附加集合: julia>
arry = String[]
append!(arry, "test")
但我得到了以下错误:
Cannot `convert` an object of type Char to an object of type String
为什么在添加字符串而不是字符时会出现此错误
(为了其他Julia新手的利益,在下面发布我自己的答案-任何有更多有用提示的人请加入!)我看不到你的答案,但这里有一个典型的模式 你可以
推代码>单个元素或附加代码>集合:
julia> arry = String[]
0-element Array{String,1}
julia> push!(arry, "test")
1-element Array{String,1}:
"test"
julia> append!(arry, ("test",))
2-element Array{String,1}:
"test"
"test"
julia> append!(arry, ["test"])
3-element Array{String,1}:
"test"
"test"
"test"
julia> append!(arry, Ref("test"))
4-element Array{String,1}:
"test"
"test"
"test"
"test"
请注意,集合可以是例如Tuple
、Vector
或Ref
(这是广播中经常遇到的一种零维非分配集合)。您应该使用push!()
,而不是追加!()
append!()
始终将其参数视为迭代器,而push()代码>将参数视为单个对象,以作为完整单元添加。由于Julia字符串是迭代器(其中每个字符都作为字符进行迭代),所以“test”字符串是逐字符迭代的。由于将数组指定为字符串类型,Julia将对插入数组的对象执行类型检查;这就是你出错的原因
对于那些来自Python的人,Julia的push!()
更接近于Python的append()
因此,以下是任意数组(基本上允许添加任何类型)上两个函数的行为差异:
该死,你跑得太快了!在我发布这篇文章之前我去喝了杯咖啡,而你已经在上面了!
# using append!():
arry = Any["a"]
append!(arry, "test")
# result == ["a", 't', 'e', 's', 't'] (a String and four Chars)
# using push!():
arry = Any["a"]
push!(arry, "test")
# result == ["a", "test"] (two Strings)