d迭代构或类的示例
原文
如何实现迭代构/类
?这样:
foreach (k, v; T.init)
{
...
}
T.byKeyValue
没用.
你应该用opApply
.示例:
struct A {
static int[string] impl;
static this() {
impl = [
"a": 1,
"b": 2,
];
}
int opApply(scope int delegate(string a, int b) dg) {
foreach (k, v; impl) {
auto r = dg(k, v);
if (r) return r;
}
return 0;
}
}
void main() {
import std;A a;
foreach (k, v; a) {
writefln("%s -> %s", k, v);
}
}
或使用front()
返回元组的区间
函数.D
有个特性,在foreach
循环中自动展开
元组:
import std.typecons : tuple;
import std.conv : to;
import std.stdio : writeln;
import std.range : take;
struct S {
size_t count;
bool empty = false;
auto front() {
const key = count;
const value = key.to!string;
return tuple(key, value);// 在此
}
void popFront() {
++count;
}
}
void main() {
foreach (k, v; S.init.take(10))
{
writeln(k, ": ", v);
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现