我想创建一个包含四个Int32值的元组。
如果我只是这样做:
julia> a = (2,3,4,5)
(2, 3, 4, 5)
julia> typeof(a)
NTuple{4,Int64}
我得到了一个四元素的Int64元组,在Julia中怎么做才能得到一个Int32 NTuple?
答案 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}
这总是吸引我,因为它需要一个元组, 不是元素,所以算上括号,
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)