ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

d的别名赋值与{{与闭包

2021-12-23 10:00:49  阅读:162  来源: 互联网

标签:闭包 ... 别名 static foreach str Hello 赋值


原文

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); };
}

标签:闭包,...,别名,static,foreach,str,Hello,赋值
来源: https://blog.csdn.net/fqbqrr/article/details/122100322

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有