d重写参数理念
这只是一种假想.
调用foo(x)
,在x
有opArgs
成员时,重写为foo(x.opArgs)
.同样,可对称的,如果定义foo(T x)
,T
有opArgs
成员时,重写为foo(typeof(T.opArgs)x)
.
该功能太强大,你可以这样:
struct S {
string opArgs;
}
string fun(S s) { return "S重载"; }
string fun(string s) { return "串重载"; }
void main() {
assert(fun(S()) == "S重载"); //失败了
}
这不是自动扩展,概念上多参
函数与带一个元组参数函数一样.
void foo(int a, string b){}
// pattern (int a,string b)
foo(1,"2"); // 匹配(1,"2")元组
(int a, string b) = (1,"2"); //同样
void foo((int a, string b), double c){}
foo((1,"2"), 3.0);
((int a,string b), double c) = ((1,"2"),3.0);
可以这样:
alias apply(alias fun) = (args) => fun(args.tupleof);
[(1,2), (3,4)].map!(apply!((a, b) => a+b)).each!writeln;
但没人愿意,你可以简单alias S=AliasSeq!(string);
这样.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现