【问题标题】:Converting GLib.Array to built in array将 GLib.Array 转换为内置数组
【发布时间】:2014-07-10 14:38:10
【问题描述】:

假设我有一个 GLib.Array<Item?> 并想将其转换为 Item[],我将如何在 Vala 中做到这一点?

【问题讨论】:

    标签: glib vala


    【解决方案1】:

    首先,除非您需要与现有代码进行互操作,否则不要使用GLib.Array。使用GLib.GenericArray,正确使用更容易,错误使用更难。

    GLib.Array.data 是一个常规数组(Item?[] 在你的情况下),GLib.GenericArray.data 也是如此,所以你可以使用它。如果你将它分配给一个拥有的变量,Vala 会制作一个副本。

    【讨论】:

      【解决方案2】:

      一种天真的方法是,您使用index() 方法从数组中取出所有项目,然后使用+= 将它们附加到一个空的Item[] 数组中。

      一个简单的示例程序:

      public int main (string[] args) {
          Array<string> array = new Array<string> ();
          array.append_val ("1. entry");
          array.append_val ("2. entry");
      
          string[] builtin = {};
      
          for (var i = 0; i < array.length; i++) {
              builtin += array.index (i);
          }
      
          return 0;
      }
      

      更新: GLib.GenericArray 看起来确实是一个更好的解决方案。至于data 属性:GenericArray 记录在ValadocArray 不是(这并不意味着它不起作用,但我没有尝试过)。

      【讨论】:

      • GLib.Array.data 非常新(目前仅在开发版本中可用,将变为 0.26),但它可以工作。
      猜你喜欢
      • 2016-11-15
      • 1970-01-01
      • 2011-12-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多