JavaScript具有立即调用的函数表达式,它们看起来像这样:(function(){})();
我想知道是否可以在D中实现类似的功能。否则,一个额外的问题是:我可以在Dlang中实现“显示模块”设计模式,还是JavaScript独有?
我尝试使用几乎所有的JS语法。
import std.stdio;
void main()
{
(function(){
return "hello";
})();
}
我没有任何结果,但是在我使用的在线代码游乐场中,它似乎可以正常编译。
是的,可以在D中执行与Java中相同的操作,并且语法也非常相似-正如您在工作代码中所看到的(就像我在评论中说的那样,您什么都看不到的原因是只是您的函数什么都不做!)
您也可以做揭示模块的事情,可以说D的标准库使用所谓的“ voldemort类型”来做到这一点-“ voldemort类型”是在函数内部声明并返回到外部的私有类型。但是完全不需要像Javascript那样做,因为D内置了模块,类等!
我在D的一些地方使用了IIFE模式,以允许语法仅允许表达式的语句,例如在循环子句或mixin
构造中。有时在初始化静态变量时也很有用。这是在单个任务中完成复杂工作的简单方法。
但是,当涉及到细节隐藏时,由于D具有模块且其模块具有private
成员,因此仅使用它通常更容易,更友好。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句