Tôi thấy nó không quen thuộc với việc phân công mảng ActionScript bằng phương pháp tham chiếu. Tôi hiểu những gì nó đang làm, nhưng tôi bằng cách nào đó thấy nó khó hiểu để quản lý nhiều mảng với phương pháp này. Có cách nào đơn giản để làm việc với các mảng ActionScript trong đó gán mảng là bởi VALUE chứ không phải là REFERENCE? Ví dụ: nếu tôi muốn chỉ định oneArray
cho twoArray
mà không liên kết hai mảng với nhau mãi mãi trong tương lai, cách thực hiện? Điều này có hiệu quả không?ActionScript: Cách gán mảng theo VALUE thay vì REFERENCE?
var oneArray:Array = new Array("a", "b", "c");
var twoArray:Array(3);
for (ii=0; ii<3; ii++) { twoArray[ii] = oneArray[ii]; }
Mục đích là có thể thay đổi twoArray
mà không thấy thay đổi trong oneArray
.
Bất kỳ lời khuyên nào về cách gán mảng bằng VALUE thay vì REFERENCE?
---- để tham khảo ----
http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/Array.html
mảng chuyển nhượng là bằng cách tham khảo chứ không phải theo giá trị. Khi bạn chỉ định một biến mảng cho biến mảng khác, cả hai tham chiếu đến cùng một mảng:
var oneArray:Array = new Array("a", "b", "c");
var twoArray:Array = oneArray; // Both array variables refer to the same array.
twoArray[0] = "z";
trace(oneArray); // Output: z,b,c.
Chỉ cần nhận thấy câu trả lời của taskinoor, để theo đuổi bạn theo hướng của tôi, hehe, 'concat' thực sự nhanh gấp đôi 'slice' về nhân bản một mảng. :) – xLite
Cảm ơn! Tôi đã nghiên cứu một chút và tìm thấy một vài liên kết hỗ trợ yêu cầu của bạn. Đây là một: http://agit8.turbulent.ca/bwp/2008/08/flash-as3-optimization-fastest-way-to-copy-an-array/ – ggkmath
điều này sẽ chỉ tạo một bản sao nông. cho một bản sao sâu của một mảng, bạn phải sử dụng ByteArray để nhân bản mảng trong AS3: http: //help.adobe.com/en_US/ActionScript/3.0_ProgrammingAS3/WS5b3ccc516d4fbf351e63e3d118a9b90204-7ee7.html – TheDarkIn1978