2012-02-29 33 views

回答

7

,如果你使用模板是

void foo(A...)(A a){ 
    bar(a); 
} 

void bar(B...)(B b){ 
//... 
} 

a被扩大了编译的时候什么样的参数,它被称为与

你也可以切片[]了一些参数,或者你添加一个参数名单

+0

这是一个不错的技巧,我不知道。不幸的是,在我的情况下,我不能使用模板,因为我需要在子类中重写该函数。也许我会改变设计。 – 2012-02-29 22:07:18

+1

@SantiagoV。在D中,可变参数函数基于模板。我甚至会说C风格的可变参数函数本来就不存在于强类型语言中。你总是可以将你的参数封装在某种异构集合中,但是你必须做出如何处理缺失参数的决定。此外,请参阅std.tuple for D的标准库实现(仍使用模板)。 – Tim 2012-03-07 18:08:23

1

我认为core.vararg可能是有用的。

+0

不,我在写这个问题时已经检查过了。 core.vararg仅为可变参数提供类似C的界面。 – 2012-02-29 21:59:57