array_copy

此函数用于在任何位置将一个数组的全部或部分复制到另一个数组中。

您可以同时提供源和目标数组(这两个数组都是先前创建的),以及源数组中要复制的位置和目标数组中要复制到的位置。最后,您需要指定要复制的数组的长度(或要复制的部分的长度)。如果要复制的数据超过目标数组的长度,则该数组将被扩展以接受数据。该函数支持为索引和元素数量指定负值,如偏移量和长度中所述。

此函数也可用于多维数组,只要您指定在提供数组索引时要复制的维度,遵循以下模式:

// Copy to the first dimension of an array
// from the second dimension of an array
array_copy(item_array, 0, inventory_array[0], 0, len);

// Copy to the third dimension of an array
// from the first dimension of an array
array_copy(item_array[0][0], 0, inventory_array, 0, len);

// etc...

 

语法:

array_copy(dest, dest_index, src, src_index, length);

参数类型描述
destArray对要复制到的数组的引用。
dest_indexReal数组中要复制到的索引。支持负索引,从数组末尾开始计算。偏移量-1表示数组的最后一个元素,偏移量-2表示最后一个元素之前的一个元素,依此类推(参见偏移量和长度)
srcArray要从中复制的数组的引用。
src_indexReal数组中开始复制的索引。支持负索引,从数组末尾开始计数。偏移量-1表示数组的最后一个元素,偏移量-2表示最后一个元素之前的一个元素,依此类推(参见偏移量和长度)
lengthReal要复制的长度 (数组索引数),从 src_index 处的值开始。可以为长度提供负值在这种情况下,复制也从索引 src_index 开始,但接下来被复制的元素是 src_index-1、src_index-2 等。即,向后复制元素。请注意,第一个值始终写入 dest_index,第二个值写入 dest_index+1,依此类推。

 

返回:

N/A

 

示例1:基本使用

if (!array_equals(inventory_array, item_array))
{
    var _len = array_length(inventory_array);
    array_copy(item_array, 0, inventory_array, 0, _len);
}

上面的代码使用 array_equals 检查两个数组,看它们是否包含相等的值。如果不这样做,代码将把数组 inventory_array 的全部内容复制到数组 item_array 中。

 

示例2:负长度

var _a = [1, 2, 3, 4];
var _b = [5, 6, 7, 8];

array_copy(_a, 1, _b, -1, -2);
show_debug_message(_a);

在上面的示例中,首先初始化两个临时数组 _a_b。接下来,将两个元素从 _b 复制到 _a。src_index 和 length 参数分别设置为 -1 和 -2。这意味着将复制最后一个 (-1) 和最后一个数组元素之前的(2 个元素,因为减号从数组 _b 的结尾开始倒数)。这意味着将 _b 的最后一个元素和最后一个元素的值分别复制到 _a 中的位置 1(dest_index 参数的值) 和位置 2。

一条调试消息显示复制后数组 _a 的内容。