如何将异构数组(Array {Any})提升为具有单个公共类型元素的同构数组?

Cri*_*usa 3 julia

想象一下,例如,有一个异构数组就像

julia> a = {1, 2.2, int32(3), float32(4.4), 5, 6.6}
6-element Array{Any,1}:
 1  
 2.2
 3  
 4.4
 5  
 6.6
Run Code Online (Sandbox Code Playgroud)

其元素的单一常见类型是Float64.

是否有函数或minimalistic命令将此类Any数组转换为具有单个公共类型(Array{Float64}对于给定示例)的元素数组,而无需事先明确写入该类型甚至知道它?

我知道如果使用括号[]来创建数组,那么Array{Float64}首先会获得一个数组.但是,问题是关于类型1在创建时无法控制的数组的转换(例如,一些数组解析,从文件读取的数组,......).

iva*_*rne 5

您正在寻找转换类型的函数被调用 convert

julia> a = {1, 2.2, int32(3), float32(4.4), 5, 6.6}
f6-element Array{Any,1}:
 1  
 2.2
 3  
 4.4
 5  
 6.6

julia> convert(Array{Float64,1},a)
6-element Array{Float64,1}:
 1.0
 2.2
 3.0
 4.4
 5.0
 6.6
Run Code Online (Sandbox Code Playgroud)

编辑: 我不确定我理解你为什么会想要你想要的行为,但我认为你问的问题的解决方案(不是你有问题!),是:

[promote(a...)...]
Run Code Online (Sandbox Code Playgroud)