【发布时间】:2014-07-10 14:38:10
【问题描述】:
假设我有一个 GLib.Array<Item?> 并想将其转换为 Item[],我将如何在 Vala 中做到这一点?
【问题讨论】:
假设我有一个 GLib.Array<Item?> 并想将其转换为 Item[],我将如何在 Vala 中做到这一点?
【问题讨论】:
首先,除非您需要与现有代码进行互操作,否则不要使用GLib.Array。使用GLib.GenericArray,正确使用更容易,错误使用更难。
GLib.Array.data 是一个常规数组(Item?[] 在你的情况下),GLib.GenericArray.data 也是如此,所以你可以使用它。如果你将它分配给一个拥有的变量,Vala 会制作一个副本。
【讨论】:
一种天真的方法是,您使用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 记录在Valadoc,Array 不是(这并不意味着它不起作用,但我没有尝试过)。
【讨论】: