gpt4 book ai didi

vala - Gee HashMap 包含方法作为值

转载 作者:行者123 更新时间:2023-12-02 04:13:51 27 4
gpt4 key购买 nike

我正在尝试填充 Libgee HashMap,其中每个条目都有一个字符串作为键,一个函数作为值。这可能吗?我想要这样的东西:

var keybindings = new Gee.HashMap<string, function> ();
keybindings.set ("<control>h", this.show_help ());
keybindings.set ("<control>q", this.explode ());

这样我最终可以做这样的事情:

foreach (var entry in keybindings.entries) {
uint key_code;
Gdk.ModifierType accelerator_mods;
Gtk.accelerator_parse((string) entry.key, out key_code, out accelerator_mods);
accel_group.connect(key_code, accelerator_mods, Gtk.AccelFlags.VISIBLE, entry.value);
}

但这也许不是最好的方法?

最佳答案

代表就是您正在寻找的人。但上次我检查时,泛型不支持委托(delegate),所以一个不太优雅的方法是包装它:

delegate void DelegateType();

private class DelegateWrapper {
public DelegateType d;
public DelegateWrapper(DelegateType d) {
this.d = d;
}
}

Gee.HashMap keybindings = new Gee.HashMap<string, DelegateWrapper> ();
keybindings.set ("<control>h", new DelegateWrapper(this.show_help));
keybindings.set ("<control>q", new DelegateWrapper(this.explode));

//then connect like you normally would do:
accel_group.connect(entry.value.d);

关于vala - Gee HashMap 包含方法作为值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6145635/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com