5
是否可以編寫函數來接受可變長度的元組?我試圖寫一個可以這樣調用的方法:f中的可變長度元組#
let a = sum(1,2)
let b = sum(1,2,3)
編輯:它可以解釋爲帶有參數的函數調用?或將方法需要在C#中寫入:
double sum(params object[] double) {
...
}
是否可以編寫函數來接受可變長度的元組?我試圖寫一個可以這樣調用的方法:f中的可變長度元組#
let a = sum(1,2)
let b = sum(1,2,3)
編輯:它可以解釋爲帶有參數的函數調用?或將方法需要在C#中寫入:
double sum(params object[] double) {
...
}
否 - 元組是按照定義不能變長,並寫這樣你需要像在C++模板元編程的功能 - 有ISN」在F#中這樣的事情; let inline
也不會幫助你。
當然,如果你把一個列表,而不是,它不會顯得太大區別:
sum[1; 2]
sum[1; 2; 3]
@PavelMineav是正確的,你不能這樣做,但要注意,成員可以被重載, a la
type Foo() =
member this.sum(x,y) = x + y
member this.sum(x,y,z) = x + y + z
let foo = new Foo()
printfn "%d" (foo.sum(1,2))
printfn "%d" (foo.sum(1,2,3))
而let-bound函數不能。
右:我對「可變長度元組」的定義基本上是一個「列表」。 ;-) – peSHIr 2009-07-16 06:24:20