是否可以编写一个函数来接受可变长度的元组?我正在尝试编写一个可以这样调用的方法:
let a = sum(1,2)
let b = sum(1,2,3)
编辑:是否可以将其解释为带参数的函数调用?或者该方法是否需要用c#编写:
double sum(params object[] double) {
...
}
答案 0 :(得分:9)
No-tuples根据定义不是可变长度,并且要编写这样的函数,你需要像C ++中的模板元编程一样 - 而且F#中没有这样的东西; let inline
也不会帮助你。
当然,如果你改用一个列表,它看起来就不会那么不同了:
sum[1; 2]
sum[1; 2; 3]
答案 1 :(得分:4)
@PavelMineav是对的,你不能这样做,但请注意成员可以重载,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函数则不能。