d目前状态

Stefan 在研究类型函数.d作者在研究加速模板元编程及所有权/借贷关系.Steven 勾勒出std2设计
亚当的:

module typegame.solution;
string easy(T...)() {
    string result;//分开显示名与看见名,用于细分
    string lastDisplay;
    string lastSeen;
    int repetitionCount;
    void finish() {//完成
        if(repetitionCount != 2 && repetitionCount != 3)
            return;
        if(result.length)result ~= " ";
        if(repetitionCount == 2)
            result ~= "double ";
        else
            result ~= "triple ";

        result ~= lastDisplay;
    }//函数中带函数

    foreach(t; T) {//T
        if(t.mangleof == lastSeen) {
            repetitionCount++;
        } else {
            finish();
            lastSeen = t.mangleof;
            lastDisplay = t.stringof;
            repetitionCount = 1;
        }//就是个`流`序列处理.
    }
    finish();return result;
}

pragma(msg, easy!(int, int, uint, uint, uint));
pragma(msg, easy!(char, char, wchar, dchar, dchar));

stefan:

alias type = __type;
type[] makeTypeArray(type[] types ...){
    return types;
}//类型数组

import std.algorithm;
enum type[] types = makeTypeArray(int, uint, long, ulong);
enum size4 = types.filter!((type a) { return a.sizeof == 4; } );//过滤类型
pragma(msg, () {
    type[] result = [];
    foreach(t;size4)result ~= t;
    return result;
}().tupleof);
// 输出:tuple((int), (uint))

opAssign不是用于初化,而是为子序列赋值.
构造函数中的第1次赋值不变量,可当作赋值.第2次就不能改了.奇怪的是在未初化成员上调用方法,导致初化它.
λ有两种形式,普通函数仅一种,这是不一致.
应该让{}过时,而用(){}
重写

`=> ...;`为`{ return ...; }`

还得消除=> {return expr;}的歧义.

struct v
{
  static int foo;
}

1(v) => v.foo;,这是模板vfoo.
2auto x(v) => v.foo;,这是函数v参数foo.
(v) => _x + v;,无类型,表明这是模板.

posted @   zjh6  阅读(18)  评论(0编辑  收藏  举报  
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示