2016-02-19 69 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!到陣列逐漸成長的第一種情況,而在第二種情況下我明確地傳遞的元素來初始化數組。