d的构造器库
A a = new A();
a.setName("Bob");
a.setAge(20);
a.isProbation(false);
a.isActive(true);
...
这样构造太冗余.
A a = new A("Bob", 20, false, true);
而如上多参
构造无标记,易搞混顺序,或含义不清楚
本库,允许这样:
class A {
string name;
int age;
bool isProbation;
bool isActive;
mixin AddBuilder!(typeof(this));
}
A a = A.builder()
.name("Bob")
.age(20)
.isProbation(false)
.isActive(true)
.build();
此工具允许单式
构造,及清楚标记参数
,还可完全不必写构造器
.
如何扩展builder
方法呢?
是自动
生成构建器
方法的,并在类中沿
继承链上移,来取所有字段
(假定你说的"扩展"
指的是继承?)
下面是其中一个单元测试
:
class A2 {
int a;
string b;
}
class B2 : A2 {
int c;
mixin AddBuilder!(typeof(this));
}
//应该可从`生成器`取得,所有继承`字段`
unittest {
B2 b2 = B2.builder()
.a(3)
.b("ham")
.c(4)
.build();
assert(b2.a == 3);
assert(b2.b == "ham");
assert(b2.c == 4);
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现