在 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 创建线程安全的初始化程序。