在 vala 的 foreach 上下文中访问静态 class 变量
Accessing static class variable in foreach context in vala
我原本想在方法中使用静态对象,但由于 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?对于我想做的事情,有更简单的解决方案吗?
这不是将某些内容放入哈希图中的正确语法。使用:
spec_char_map.set (_chrs[0], _chrs[1]);
或
spec_char_map[_chrs[0]] = _chrs[1];
此外,考虑使用 GLib.Once
创建线程安全的初始化程序。
我原本想在方法中使用静态对象,但由于 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?对于我想做的事情,有更简单的解决方案吗?
这不是将某些内容放入哈希图中的正确语法。使用:
spec_char_map.set (_chrs[0], _chrs[1]);
或
spec_char_map[_chrs[0]] = _chrs[1];
此外,考虑使用 GLib.Once
创建线程安全的初始化程序。