Dizileri klonlamaFlash Player 9 ve üstü, Adobe AIR 1.0 ve üstü Array sınıfı, dizilerin kopyasının oluşturulmasına yönelik yerleşik bir yöntem içermez. Herhangi bir argüman olmadan concat() veya slice() yöntemlerinden birini çağırarak bir dizinin basitkopyasını oluşturabilirsiniz. Basit kopyada, orijinal dizi, nesne olan öğeler içeriyorsa, nesnelerin kendisi değil yalnızca nesnelerin başvuruları kopyalanır. Kopya, orijinallerle aynı nesneleri işaret eder. Nesneler üzerinde yapılan tüm değişiklikler her iki dizide de yansıtılır. Kapsamlı kopyada, orijinal dizide bulunan tüm nesneler de kopyalanır ve böylece yeni dizi, orijinal diziyle aynı nesneleri işaret etmez. Kapsamlı kopyalamada, genellikle bir işlevin oluşturulması için çağrı yapan birden çok kod satırı gerekir. Bu tür bir işlev, genel bir yardımcı program işlevi olarak veya Array alt sınıfının bir yöntemi olarak oluşturulabilir. Aşağıdaki örnek, kapsamlı kopyalama yapan clone() adında bir işlevi tanımlar. Algoritma, ortak bir Java programlama tekniğinden alınmıştır. Bu işlev, diziyi bir ByteArray sınıfı örneğine serileştirip sonra diziyi geri yeni bir diziye okuyarak kapsamlı bir kopya oluşturur. Bu işlev, aşağıdaki kodda gösterildiği gibi, hem dizinlenmiş dizilerle hem ilişkilendirilebilir dizilerle kullanılabilecek şekilde bir nesneyi kabul eder: import flash.utils.ByteArray; function clone(source:Object):* { var myBA:ByteArray = new ByteArray(); myBA.writeObject(source); myBA.position = 0; return(myBA.readObject()); } |
|