作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如果您定义一个接受委托(delegate)的函数,则 D 可以在您调用该函数时对委托(delegate)参数进行类型推断。所以如果我写一个带有签名的函数:
void foo(void delegate(int,string) dlg)
foo((a,b){});
a
是
int
和
b
是
string
.
void foo(T...)(void delegate(T) dlg)
foo((int a,string b,char c,boolean d){});
foo
通过
接受委托(delegate)任意 参数的数量 - 所有相同的类型。所以我可以打电话:
foo((a,b,c,d,e,f,g){});
a
至
g
都是
string
s。
dlg
本身不接受任何数量的参数,它是
foo
接受带有任意数量参数的委托(delegate)。
foo((a,b,int c,d){});
a
,
b
和
d
将是字符串,而
c
将是
int
.
最佳答案
这可能是一个增强请求。但是现在你可以在编译时将它作为别名传递:
import std.stdio;
void foo(alias dlg)()
{
dlg(1, 2.0, [3], "a");
dlg(1.0, 2, [[3]], "b");
}
void main()
{
foo!((a, b, c, d) { writefln("%s %s %s %s", a, b, c, d); } )();
}
关于d - 类型推断具有未知数量的已知类型参数的委托(delegate)参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15479707/
这个问题在这里已经有了答案: 关闭 10 年前。 Possible Duplicate: Combination of List> 我有多个列表,可以是 2 个或 3 个,最多 10 个列表,有多个
我是一名优秀的程序员,十分优秀!