本文主要是介绍2310D库功能还是语言功能,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
原文
把库可实现的功能
放进语言是个坏主意
.
是的.但是目前该语言
缺乏良好方式完成它的工具.需要它:
template FOO(T) {alias FOO = T;
}
pragma(msg, FOO!int); //`FOO`降级成`int`
template BAR(alias T) {enum BAR = T;
}
pragma(msg, BAR!42); //`BAR`降级为`42`//提议的新功能:自动串插件
template BAZ(string T) {mixin BAZ = T;
}
pragma(sg, BAZ!"42, 42");
//`BAZ`应该降级成`pragma(msg,mixin("42,42"));`
//注意:`mixin("42,42")`目前不管用.
//所以变成`pragma(msg, 42, 42);`
这是否可在编译器中实现?
没错,但如下可作为库功能
实现吗?考虑:
void test {int x = 78;func("x = $x");
}
为了使其正常工作,必须在"测试
"环境中分析"x"
的语义.但它错误的在"func"
的环境中求值.
在"test"
环境中求值
,要求"func"
返回串,然后应用mixin
.
因此,它必须写成:
mixin(func("x = $x");
DIP1027
提供了语法糖
.
这篇关于2310D库功能还是语言功能的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!