【发布时间】:2020-11-09 17:34:08
【问题描述】:
我正在尝试在 Julia 中构建一个二元数组,其中每个子数组都有不同的类型(一个是 Int64s 的向量,另一个是 Float32s 的数组)。
下面的代码自动将我想要成为Int64 的元素转换为Float32,这是我不想要的:
my_multitype_array = [ collect(1:5), rand(Float32,3) ]
生成的数组会自动将第一个数组(通过collect(1:5) 定义)中的Int64s 转换为Float32,生成的my_multitype_array 的类型为2-element Array{Array{Float32,1}}。如何强制它使第一个子数组保持Int64s?在用值填充之前,我是否需要将 my_multitype_array 预定义为一个包含两个所需类型元素的空数组?
最后,一旦我确实拥有了不同类型的所需数组,在函数中预先声明其类型时,我将如何引用它?我的意思见下文:
function foo_function(first_scalar_arg::Float32, multiple_array_arg::Array{Array{Float32,1}})
# do stuff
return
end
我会写::Array{Array{Any,1}} 或其他什么,而不是::Array{Array{Float32,1}}?
【问题讨论】:
-
在您得到的答案中,您可以使用 Union 类型。但是您也可以考虑外部结构是否是元组而不是数组。这可能会更有效,因为它会在编译时知道两种内部类型。
标签: arrays types type-conversion julia variable-declaration