aardio 文档
aardio 范例: 多维数组
//多维数组
import console;
/*
aardio 中的数组可以包含一切,数组成员可以是任意类型,
当然数组的成员也可以是数组,数组可以任意的嵌套包含其他数组。
aardio数组的成员不必限定类型、限定维数,数组也不必先声明大小就可以使用,是非常灵活方便的动态数组。
参考文档: https://www.aardio.com/zh-cn/doc/language-reference/datatype/table/_.html
*/
var array = {};
array[1] = {};
array[1][1] = {};
array[1][1][1] = {};
//这是一维数组
var array = { 11;12;13;14 };
//这是一个二维数组,其实就是数组的数组
var array = {
{11;12;13;14};
{21;22;23;24};
{31;32;33;34};
}
console.dump( array[2][3] ); //显示第2行第三列的数据
//其实所谓多维数组,只是方便人们理解的一种说法,多维数组也可以用一维数组来表示, 例如:
var array = {
11;12;13;14;
21;22;23;24;
31;32;33;34;
get = lambda(row,col) owner[ (row-1) * 4 + col ];
}
console.dump( array.get(2,3) ); //获取第2行第3列的数据,
/*
其实在编程中,大多时候,我们使用多维数组,并不必要先声明大小和类型,
在aardio中也提供 table.array 函数可以预分配指定大小、维数、并拥有指定默认值的数组。
可以在参数中使用任意个参数指定下一维的数组长度,
前面的参数指定父数组长度,后面的参数指定子数组长度,最后一个参数指定默认值
*/
var array = table.array( 5/*行*/,5/*列*/,7/*默认值*/ );
console.dump(array);
//默认值也可以指定一个table对象(数组最后一维的成员都会复制一个新的table对象作为默认值,而不是指向同一个table对象)
var array = table.array( 5,5,{} );
console.log( array[1][1] != array[2][2] );
//默认值还可以是一个用来创建默认值的函数(或 lambda 表达式 ),并且可以在函数后面指定调用该函数的参数
var array = table.array( 5, table.array,5,{} );
console.dump( array );
//我们甚至可以不指定数组长度,仅指定一个函数,table.array会循环调用该函数并将所有非null返回值返回为数组
var array = table.array( string.gmatch("abcdef",".") ); //调用string.gmatch返回的迭代器恰好符合要求
console.dump( array );
var arr = {
{50,80};
{20,24};
{100,103};
{4,8};
}
//多维数组排序,注意两值相等不要返回 true
table.sort(arr,function(v) {
for(i=1;#owner) if(owner[i]!=v[i]) return owner[i] < v[i];
})
console.dump(arr);
console.pause();
Markdown 格式