要增加foreach语句支持,需要在MyMap类中实现opApply函数。opApply函数是D语言中用于支持foreach语句的函数,它需要返回一个bool类型的值,表示循环是否继续。以下是修改后的代码:

import std.stdio;

class MyMap(K, V) { private { V[K] data; }

public {
    void insert(K key, V value)
    {
        data[key] = value;
    }

    V get(K key)
    {
        return data[key];
    }

    void byKeyValue(void delegate(K, V) dg)
    {
        foreach (key, value; data) {
            dg(key, value);
        }
    }

    void byKey(void delegate(K) dg)
    {
        foreach (key; data.keys) {
            dg(key);
        }
    }

    void byValue(void delegate(V) dg)
    {
        foreach (value; data.values) {
            dg(value);
        }
    }

    bool opApply(scope delegate(ref const(K), ref const(V)) dg)
    {
        foreach (key, value; data) {
            dg(key, value);
        }
        return true;
    }
}

}

void main() { auto map = new MyMap!(string,int)();

map.insert("one", 1);
map.insert("two", 2);
map.insert("three", 3);

// 遍历键值对
foreach (key, value; map) {
    writeln(key, ": ", value);
}

// 遍历键
foreach (key; map.keys) {
    writeln(key);
}

// 遍历值
foreach (value; map.values) {
    writeln(value);
}

}

现在,可以使用foreach语句遍历MyMap类的实例了。例如,可以使用foreach (key, value; map)遍历键值对

我有以下dlang语言代码我怎么增加foreach语句支持即用foreach就可以遍历MyMap代码如下:import stdstdio;class MyMapK V private VK data; public void insertK key V value datakey = value;

原文地址: http://www.cveoy.top/t/topic/fF6Y 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录