说我有:
arr = {"a" "b" "r"}
> 1x3 Array{Any,2}:
> "a" "b" "r"
我希望它是 Array{Symbol,2} 类型。
还有
julia> convert(Array{Symbol}, arr)
1x3 Array{Symbol,2}:
:a :b :r
这有效:
symarr = reshape(Symbol[arr...],size(arr)...)
还要注意如果数组中的所有元素都是你想要的类型,你可以使用:
strarr = reshape([arr...],size(arr)...)
如果你对 Vector 满意,你可以简单地使用:
symvec = Symbol[arr...]
strvec = [arr...]
还有一个有趣的宏:
macro convarr(a, t)
:(reshape($t[$a...],size($a)...))
end
@convarr arr Symbol
请注意,以上所有内容都会创建原始 Array{Any,2} 数组的新副本
正因为这似乎是我搜索时的最高结果,所以我会将我的评论分解为可见性的答案。
已接受的答案似乎不再有效。 有关相关讨论,请参阅此链接。
我建议使用列表理解。
接受的方法
arr = ["a" "b" "c"]
1×3 Matrix{String}:
"a" "b" "c"
convert(Array{Symbol}, arr)
ERROR: MethodError: Cannot `convert` an object of type String to an object of type Symbol
推荐方法
[Symbol(a) for a in arr]
1×3 Matrix{Symbol}:
:a :b :c