Squirrel脚本中的table和array

squirrel脚本是类lua脚本的脚本语言,同样是个开源的项目,其主要寄生与C++高级语言,也是面向对象编程的语言!该语言有许多特性,其table结构和array结构最为常用,除此还有class,classinstance结构,此处只对table和array的特性做介绍,具体的可参考 其官方网站的帮助文档!下面所描述均根据帮助文档而来,如有侵权请联系我!

 

 

Table

table是由键值对(也被称为槽)构成的辅助容器;值(value)可以是任何类型,键(key)也可以是任何类型除了null类型。Tablesquirrel的骨架,委托和许多其他特点的实现机制,甚至存储全局变量的整个环境也是一个表成为根表(root table)

Construction(构建)

表可以通过表构造函数(table constructor)创建

Slot creation(槽创建)

对一个存在的表添加一个槽(slot)用操作符’<-‘,这个操作符的行为就像赋值操作,除此之外如果这个slot在表中未声明,用这个操作符可以创建此槽(slot)如:

local a={}    

下面一行将引起一个异常因为槽”newslot”在表a中并不存在

a.newslot = 1234

下面的方式则可以:

a.newslot <- 1234;

                      

or或者

a[1] <- "I'm the value of the new slot";

                      

Slot deletion(删除槽)

exp:= delete derefexp

槽(slot)删除是通过关键字delete实现的;下面的表达式将会引起一个槽的删除:

a <- {

    test1=1234

    deleteme="now"

}

 

delete a.test1

print(delete a.deleteme); //将会打印出字符串“now

 

 

Table constructor(表构造)

tslots := ( ‘id’ ‘=’ exp | ‘[‘ exp ‘]’ ‘=’ exp ) [‘,’]

exp := ‘{’ [tslots] ‘}’

                      

创建一个新表

local a={} //create an empty table    (创建一个空表)                

                      

一个表构造也可以包含槽(slot)的声明,用这样的语法:

id = exp [',']

一个id做为keyexp做为value的新槽(slot)被创建了

local a=

{

    slot1="I'm the slot value"

}

也可以用这样的语法:

'[' exp1 ']' = exp2 [',']

exp1做为key(键),exp2做为value(值)的新槽被创建

local a=

{

    [1]="I'm the value"

}

                      

两种创建可以混合使用:

local table=

{

    a=10,

    b="string",

    [10]={},

    function bau(a,b)

    {

        return a+b;

    }

}

                      

在槽之间的逗号是可选择的(非必须的)

                      

Table-built function 表操作函数

len()

返回在表容器(table)中槽(slot)的数量

rawget(key)

不用代理尝试利用key键得到一个值

rawset(key,val)

不使用delegation(代理)设定槽的key用值val,如果这个槽不存在的话,将会创建它

rawdelete()

不使用delegetion删除槽的key键,然后返回它的value值,如果这个slot不存在的话返回null

rawin(key)

如果槽的key存在返回真(true,它的作用和操作符in有相同作用,只是此函数不使用delegation

weakref()

返回这个对象的弱引用

tostring()

尝试调用_tostring元操作,如果失败,返回”table:pointer”

 

Arrays

数组是存储对象的简单序列,数组(array)大小是动态的,他们的下表从0开始

local a=["I'm","an","array"]
local b=[null]
b[0]=a[2];
               

数组的重置大小,数组元素的插入、删除和数组本身的删除都是通过一系列定义的标准函数完成(参考built-in function

array的操作函数

len()

返回数组的长度

append(val)

在数组末尾添加值为val的元素

extend(array)

通过给定的参数array里的元素添加扩展

pop()

array后面删除一个值并返回此值

top()

通过下标返回数组里的值

insert(idx,val)

在数组idx下标出添加值为val

remove(idx)

移除下标为idx的值

resize(size,[fill])

重新设定array大小,如果可选参数fill已被指定值,且当新数组(array)的大小大于原来的大小时,fill的值将会被用做这个新数组(array)的槽(slots)

sort([compare_func])

对数组里德元素排序,排序比较函数通过传进的参数实现,要传进的函数协议类型像下面:

function custom_compare(a,b)
{
        if(a>b) return 1
        else if(a<b) return -1
        return 0;
}
                                      

reverse()

逆转array中元素的位置

slice(start,[end])

返回数组的一部分作为新数组。从start复制到end(不含),如果start是负的,下标为length+start;果end是负的下标为length+start;如果end被疏漏了,end等于arraylength

weakref()

返回这个对象弱引用

tostring()

返回字符串类型

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值