d不能创建匿名模板
void foo(alias callback)()
{
callback!5;
}
static void print(int i)() { writeln(i); }
foo!print;
如何合并后2行为1行?
我不理解,但这好像工作:
void foo(alias callback)()
{
import std.stdio : writefln;
callback.writefln!"%s";
}
void main()
{
auto i = [ 1, 2, 3 ];
auto s = ["foo", "bar", "zoo"];
foo!i;
foo!s;
foo!"hello, world!";
enum a = 11, b = 22;
foo!(a + b);
} /*
[1, 2, 3]
["foo", "bar", "zoo"]
hello, world!
33
*/
匿名模板是不行的.
// 命名模板:
static void print(int i)() {
import std;
writeln(i);
}
void main() {
foo!print;
}
因为有print才工作.匿名模板不行,像λ一样传递模板.
foo!((int i)() {
import std;
writeln(i);
});
'(int i)()'期望定义模板.
浙公网安备 33010602011771号