我原本想在方法中使用static,但由于它在 vala 中不存在,我正在尝试使用静态对象。
唯一的问题是我收到了这个错误
utils.vala:112.11-112.57: error: invocation not supported in this context
Synapse.Utils.spec_char_map (_chrs[0], _chrs[1]);
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
以上代码
namespace Synapse
{
namespace Utils
{
static Gee.HashMap spec_char_map;
public static void map_special_chars (ref string query) {
if (null == spec_char_map)
{
message("INIIIIT");
spec_char_map = new Gee.HashMap<char, char> ();
var spec_char_table = "ъ=-,Ь=-,Ъ=-,ь=-";
foreach (var spec_char in spec_char_table.split (","))
{
var _chrs = spec_char.split ("=");
spec_char_map (_chrs[0], _chrs[1]);
}
}
}
}
}
这是什么错误,为什么我无法在 foreach 上下文中使用 Hashtable ?对于我想做的事情,是否有更简单的解决方案?
答案 0 :(得分:0)
这不是在hashmap中放置内容的正确语法。使用:
spec_char_map.set (_chrs[0], _chrs[1]);
或
spec_char_map[_chrs[0]] = _chrs[1];
另外,请考虑使用GLib.Once
创建一个线程安全的初始化程序。