aardio 元表的基本应用

axuanup 2024-7-5 1164

Code AardioLine:122复制
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.
  • 45.
  • 46.
  • 47.
  • 48.
  • 49.
  • 50.
  • 51.
  • 52.
  • 53.
  • 54.
  • 55.
  • 56.
  • 57.
  • 58.
  • 59.
  • 60.
  • 61.
  • 62.
  • 63.
  • 64.
  • 65.
  • 66.
  • 67.
  • 68.
  • 69.
  • 70.
  • 71.
  • 72.
  • 73.
  • 74.
  • 75.
  • 76.
  • 77.
  • 78.
  • 79.
  • 80.
  • 81.
  • 82.
  • 83.
  • 84.
  • 85.
  • 86.
  • 87.
  • 88.
  • 89.
  • 90.
  • 91.
  • 92.
  • 93.
  • 94.
  • 95.
  • 96.
  • 97.
  • 98.
  • 99.
  • 100.
  • 101.
  • 102.
  • 103.
  • 104.
  • 105.
  • 106.
  • 107.
  • 108.
  • 109.
  • 110.
  • 111.
  • 112.
  • 113.
  • 114.
  • 115.
  • 116.
  • 117.
  • 118.
  • 119.
  • 120.
  • 121.
  • 122.
    • //aardio 元表
    • import console;
    • var tab1 = {10,20,30}; //普通表
    • var tab2 = {2}; //普通表
    • //给table设置个元表,相当于给table添加了一些行为
    • var meta = {
    • _tostring = function() {
    • //直接转为字符串
    • return string.join(owner,",")
    • };
    • _tonumber = function() {
    • //直接转为数字
    • return owner;
    • };
    • _eq = function(b){
    • //等于==
    • return owner[1] === b[1];
    • };
    • _le = function(b){
    • //小于等于<=
    • return owner[1] <= b[1];
    • };
    • _lt = function(b){
    • //小于<
    • return owner[1] < b[1];
    • };
    • _add = function(b){
    • //加
    • return owner[1] + b[1];
    • };
    • _sub = function(b){
    • //减
    • return owner[1] - b[1];
    • };
    • _mul = function(b){
    • //乘
    • return owner[1] * b[1];
    • };
    • _div = function(b){
    • //除
    • return owner[1] / b[1];
    • };
    • _mod = function(b) {
    • //模
    • return owner[1] % b[1];
    • };
    • _pow = function(b) {
    • //幂
    • return owner[1] ** b[1];
    • };
    • _lshift = function(b) {
    • //左移<<
    • return owner[1] << b[1];
    • };
    • _rshift = function(b) {
    • //右移>>
    • return owner[1] >> b[1];
    • };
    • _unm = function() {
    • //取反
    • return -owner[1];
    • };
    • _len = function() {
    • //取长度
    • return #owner
    • };
    • _concat = function(b) {
    • //拼接
    • return table.concat(owner,b);
    • };
    • _call = function(a,b) {
    • //作为函数使用
    • return a+b;
    • };
    • }
    • tab1@ = meta; //给table1添加元表
    • tab2@ = meta; //给table2添加元表
    • var eq = tab1 == tab2; //相等table元方法
    • var le1 = tab1 >= tab2; //大于等于table元方法
    • var le2 = tab1 <= tab2; //小于等于table元方法
    • var lt1 = tab1 > tab2; //大于table元方法
    • var lt2 = tab1 < tab2; //小于table元方法
    • var add = tab1 + tab2; //加法table元方法
    • var sub = tab1 - tab2; //减法table元方法
    • var mul = tab1 * tab2; //乘法table元方法
    • var div = tab1 / tab2; //除法table元方法
    • var mod = tab1 % tab2; //取模table元方法
    • var pow = tab1 ** tab2; //取幂table元方法
    • var unm = -tab1
    • var concat = tab1++tab2; //拼接table元方法
    • var lshift = tab1<<tab2; //左移table元方法
    • var rshift = tab1>>tab2; //右移table元方法
    • var len = #tab1 //长度table元方法
    • console.log("tostring->",tostring(tab1))
    • console.log("tonumber->",tonumber(tab1))
    • console.log("等于 == eq->",eq)
    • console.log("大于等于 >=lt1->",lt1)
    • console.log("小于等于 <=lt2->",lt2)
    • console.log("大于 > le1->",le1)
    • console.log("小于 < le2->",le2)
    • console.log("加法 + add->",add)
    • console.log("减法 - sub->",sub)
    • console.log("乘法 * mul->",mul)
    • console.log("除法 / div->",div)
    • console.log("取模 % mod->",mod)
    • console.log("取幂 pow->",pow)
    • console.log("取反 unm->",unm)
    • console.log("长度 len->",len)
    • console.log("函数表 call->",tab1(20,40))
    • console.dump("拼接表 concat->",concat)
    • console.log("左移 lshift->",lshift)
    • console.log("右移 rshift->",rshift)
    • console.pause(true);

    最新回复 (0)
    返回