d的别名赋值与{{与闭包
import std;
void main()
{
static foreach(Foo; ["Abc", "def"]) {{
string str = Foo;
writeln("Hello D ", str, __VERSION__);
}}
}
//输出
Hello D Abc2098
Hello D def2098
工作
的,
AliasAssign
与{{/}}
无关,该技巧与() { ... }
闭包类似.
亚当:
static foreach
是迭代编译时值
,特殊在于可在函数外(及内部)
使用.在函数外
不能用函数内合法
的东西,因而仅是些声明
,而无嵌套域/表达式
.
函数外,静断{{ }}
是非法的,因为{}
在函数外是非法
的,而在函数内
,则是合法的,{}
用来表示域
语句.
void test() {
int a;
{ // 域语句
int b;
}
// a存在,b已完蛋.
static foreach(...)
stuff; // {}省略了
static foreach(...) {
stuff; // 同上
}
// 两个{}
static foreach(...) { //可选{}
{ // 域语句之一
int b;
}
}
}
别名赋值
与此无关,它是用未访问
的声明来覆盖另一个,给你编译时修改的错觉.
ag0aep6g:
{ ... }
与() { ... }
不一样,后者不是闭包,也不一定包含闭包.
//只是个域
import std.stdio;
void main()
{
{
string str = "Abc";
writeln("Hello D ", str, 2098L);
}
}
//立即调用的函数字面
import std.stdio;
void main()
{
() {
string str = "Abc";
writeln("Hello D ", str, 2098L);
} ();
}
//返回闭包.
import std.stdio;
void main() { f("Abc")(); }
auto f(string str)
{
return { writeln("Hello D ", str, 2098L); };
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!