d构的元组静态索引
原文
我想静态索引我的类:
struct Point
{
double x;
double y;
alias expand = typeof(this).tupleof;
alias expand this;
}
unittest
{
Point p = Point(1.2,3.4);
assert(p[0]==1.2);//像这样
assert(p[1]==3.4);
assert(!__traits(compiles,Point.init[3]));
}
通过了,我喜欢该技术,从2.094
开始,允许别名
至tupleof
.std.typecons.Tuple
的工作方式不一样.声明
元组为别名本
的d
成员,再定义名字访问器
.
阿里
:std.typecons.Tuple
就是干这个的,可这样:
import std.typecons;
alias Point = Tuple!(double, "x", double, "y");//元组.
unittest
{
Point p = Point(1.25,3.5);
assert(p[0]==1.25);
assert(p.x==1.25);
assert(p[1]==3.5);
assert(p.y==3.5);
assert(!__traits(compiles,Point.init[3]));
}
void foo(ref Point p) {
p.x += p.y;
}
unittest {
auto p = Point(1.5, 2.75);
p.foo();
assert(p.x == 4.25);
assert(p.y == 2.75);
}
void main() {
}
每一
不喜欢,但元组
可以:
foreach(x, y; only(Point(1.0, 2.0)) {} //错误
foreach(x, y; only(tuple(1.0, 2.0)) {} // ok
最上面,很有意思技巧,这样,不必用生成插件
.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现