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;
,这是模板v
的foo
.
2auto x(v) => v.foo;
,这是函数v参数
的foo
.
(v) => _x + v;
,无类型,表明这是模板
.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现