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)