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

时间:2019-09-15 14:53:33

标签: julia

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

如果我只是这样做:

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

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

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

2 个答案:

答案 0 :(得分:6)

由于您运行的是julia的64位版本, 您的整数文字默认为Int64。

要获取Int32的元组,您需要传递Int32。

通过在构建元组之前将它们构造为Int32

julia> x = (Int32(1), Int32(2), Int32(3), Int32(4))
(1, 2, 3, 4)

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

转换元组的每个元素

julia> y = convert.(Int32, (1,2,3,4))
(1, 2, 3, 4)

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

转换整个元组

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

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

或NTuple构造函数。

这总是吸引我,因为它需要一个元组, 不是元素,所以算上括号,

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

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

答案 1 :(得分:3)

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

但是,如果您实际上仍然需要进行转换,则此操作更加方便,并且速度与convert一样快:

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

julia> b = Int32.(a)