2016-02-19 68 views
2

我想定义元组数组的参数。 我不知道数组中会有多少个元组,但我确切地知道每个元组中有多少个元素。指定元组数

我不想使用Vararg,因为没有临时编号的尾随元素。每个元组包含确切的nFloat64数字。 n取决于用户输入。

如何告诉程序每个元组包含n数字?

+3

我认为你正在寻找'Array {NTuple {N,Float64},1}',或者你可以使用1以外的数字,如果你有这些元组的多于1d的数组 – spencerlyon2

+0

Thanks @ spencerlyon2!你能给我一个文件的链接吗?因为我找不到它 – Pigna

+0

但现在我有另一个问题:如果我把该数组作为函数的参数呢?我如何指定它们是长度为n的元组?我尝试添加'n'作为另一个参数:'f(n :: Int8,array:Array {NTuple {Int64(n),Float64},1})'但它不起作用。我得到:'LoadError:UndefVarError:n not defined' – Pigna

回答

2

斯宾塞是正确的;长度为n的元组的类型写为NTuple{n,T}。这里有一个如何与这种类型的创建阵列的例子:

julia> n = 4 
4 

julia> A = Array{NTuple{n,Float64},1}(0) 
0-element Array{NTuple{4,Float64},1} 

julia> push!(A, (1,2,3,4)) 
1-element Array{NTuple{4,Float64},1}: 
(1.0,2.0,3.0,4.0) 

julia> NTuple{n,Float64}[(0,0,0,0),(1,1,1,1)] 
2-element Array{NTuple{4,Float64},1}: 
(0.0,0.0,0.0,0.0) 
(1.0,1.0,1.0,1.0) 

在我以前push!到阵列逐渐成长的第一种情况,而在第二种情况下我明确地传递的元素来初始化数组。