2014-07-10 54 views

回答

0

一個天真的方法是,你用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它不是(這並不意味着它沒有工作,但我沒有嘗試過)。

+1

GLib.Array.data是相當新的(目前僅在開發版本中可用,它將變爲0.26),但它的工作原理。 – nemequ

3

首先,除非您需要與現有代碼進行互操作,否則請勿使用GLib.Array。使用GLib.GenericArray,這是更容易正確使用,更難以正確使用。

GLib.Array.data是一個常規數組(Item?[]在你的情況),因爲是GLib.GenericArray.data,所以你可以使用它。如果你將它分配給一個擁有的變量,Vala將複製一份。