gpt4 book ai didi

d - 有人可以解释D语言模板速记形式吗?

转载 作者:行者123 更新时间:2023-12-03 21:47:25 25 4
gpt4 key购买 nike

我有一位教授用速记写了他所有的 D 模板示例:

T exec(alias f,T)(T t) {
return f(t);
}

我找不到任何解释这意味着什么的例子。这里有人可以解释一下吗?

最佳答案

在函数模板中,第一组括号保存模板参数,第二组保存函数参数。

http://dlang.org/template.html#function-templates

您可以将其重写为:

template exec(alias f, T) {
T exec(T t) {
return f(t);
}
}

在使用点上,如果模板成员与模板本身同名,则不必编写两次。这被称为同名技巧。 http://www.bing.com/search?q=eponymous+trick+d+programming+language&qs=n&form=QBRE&pq=eponymous+trick+d+programming+languag&sc=0-0&sp=-1&sk=

虽然我见过的大多数 D 代码都使用较短的格式——长模板语法对于函数、类或结构来说非常罕见,它们也可以这样做:struct Foo(T) { } 是一个带有参数 T 的结构模板。

这个 exec 模板中的参数本身是“别名 f”,它是您决定传递的任何符号,例如,函数或变量名称,以及“T”,只是任何泛型类型。重复的 T 是对该类型的引用。

在使用点,您很可能会看到如下所示:
int foo(int a) { return a; } // just a regular function
exec!(foo)(10); // instantiates the template with arguments (foo, int), and then calls the function.

这里的第二个模板参数是由函数参数隐式计算出来的。这在函数模板中很常见:很多模板参数都是隐式的,所以你很少看到它们被写出来。您可能会在 D 讨论中看到它被称为“IFTI”,意思是“隐式函数模板实例化”。

关于d - 有人可以解释D语言模板速记形式吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13755873/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com