Julia 创建一个包含4个Int32元素的元组

Julia 创建一个包含4个Int32元素的元组,julia,Julia,我想创建一个包含四个Int32值的元组 如果我只是这样做: julia> a = (2,3,4,5) (2, 3, 4, 5) julia> typeof(a) NTuple{4,Int64} 我得到一个Int64的四元素元组,在Julia中应该怎么做才能得到一个Int32的元组?因为您运行的是64位版本的Julia, 您的整数文本默认为Int64 要获取Int32的元组,需要传入Int32 或者在构建元组之前将它们构造为Int32 转换元组的每个元素 转换整个元组 或者是NTu

我想创建一个包含四个Int32值的元组

如果我只是这样做:

julia> a = (2,3,4,5)
(2, 3, 4, 5)

julia> typeof(a)
NTuple{4,Int64}

我得到一个Int64的四元素元组,在Julia中应该怎么做才能得到一个Int32的元组?

因为您运行的是64位版本的Julia, 您的整数文本默认为Int64

要获取
Int32
的元组,需要传入Int32

或者在构建元组之前将它们构造为
Int32
转换元组的每个元素 转换整个元组 或者是NTuple构造函数。 这个总是吸引我,因为它需要一个元组, 不是元素,所以数一数括号

julia> a = NTuple{4,Int32}((1,2,3,4))
(1, 2, 3, 4)

julia> typeof(a)
NTuple{4,Int32}

由于您希望函数返回
Int32
s的元组,因此我假设这也是您的函数在内部使用的元组。因此,假设不需要进行任何转换(否则为什么要返回
Int32
s?)如果您在32位系统上,您可以简单地使用
Int
,因为这在32位系统上等于
Int32
,在64位系统上等于
Int64

但是,如果您实际上仍然需要进行转换,这将更加方便,并且与
convert
一样快:

julia> a = (1, 2, 3, 4)

julia> b = Int32.(a)

另一种可能性是
NTuple{4,Int32}((1,2,3,4))
。给定一个任意长度的输入元组
t
,您还可以执行
NTuple{length(t),Int32}(t)
@AnshulSinghvi添加更容易理解的语句。我使用的是64位系统,但操作的是巨大的整数数组。我想使用32位来节省一些内存,因为32位对于我管理的数据来说已经足够了。这对于大型数组来说是有意义的,但对于长度为4的元组来说就没有意义了。当它们需要进入大型阵列时,您不能转换它们吗?我在想,让它变得简单和自然,然后在必要时进行转换。如果数据是32位的,我希望所有处理它的函数/例程都是32位的。看起来干净一点。我可能试图模拟C语言,其中数据是强类型的。但在这种情况下,您的函数不应该对所有计算都使用
Int32
s吗?在这种情况下为什么需要转换?我已经看到,将符合元组的单个变量定义为
Int32
a::Int32=0
b::Int32=0
c::Int32=0
d::Int32=0
,然后将元组定义为
(a,b,c,d)
,也会生成一个
Int32
元组(并强制所有内容从一开始就使用32位)。因此,正如您所说,我最终不需要转换。这并不意味着我不想了解转换是如何工作的(我与Julia合作了几天,所以即使是基本概念对我来说都是新的)。
julia> z = convert(NTuple{4, Int32}, (1,2,3,4))
(1, 2, 3, 4)

julia> typeof(z)
NTuple{4,Int32}
julia> a = NTuple{4,Int32}((1,2,3,4))
(1, 2, 3, 4)

julia> typeof(a)
NTuple{4,Int32}
julia> a = (1, 2, 3, 4)

julia> b = Int32.(a)