Squirrel指令碼中的table和array

2021-05-24 23:20:25 字數 3021 閱讀 2781

table

table是由鍵值對(也被稱為槽)構成的輔助容器;值(value)可以是任何型別,鍵(key)也可以是任何型別除了null型別。table是squirrel的骨架,委託和許多其他特點的實現機制,甚至儲存全域性變數的整個環境也是乙個表成為根表(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 <-

delete a.test1

print(delete a.deleteme); //將會列印出字串「now」

table constructor(表構造)

tslots := ( 『id』 『=』 exp | 『[『 exp 『]』 『=』 exp ) [『,』]

exp := 『』

建立乙個新錶

local a={} //create an empty table    (建立乙個空表)

乙個表構造也可以包含槽(slot)的宣告,用這樣的語法:

id = exp [',']

乙個id做為key,exp做為value的新槽(slot)被建立了

local a=

也可以用這樣的語法:

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

exp1做為key(鍵),exp2做為value(值)的新槽被建立

local a=

兩種建立可以混合使用:

local table= ,

function bau(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()

返回陣列的長度

在陣列末尾新增值為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)
reverse()

逆轉array中元素的位置

slice(start,[end])

返回陣列的一部分作為新陣列。從start複製到end(不含),如果start是負的,下標為length+start;果end是負的下標為length+start;如果end被疏漏了,end等於array的length值

weakref()

返回這個物件弱引用

tostring()

返回字串型別

Squirrel指令碼中的table和array

table table是由鍵值對 也被稱為槽 構成的輔助容器 值 value 可以是任何型別,鍵 key 也可以是任何型別除了null型別。table是squirrel的骨架,委託和許多其他特點的實現機制,甚至儲存全域性變數的整個環境也是乙個表成為根表 root table construction...

Squirrel指令碼中的table和array

table table是由鍵值對 也被稱為槽 構成的輔助容器 值 value 可以是任何型別,鍵 key 也可以是任何型別除了null型別。table是squirrel的骨架,委託和許多其他特點的實現機制,甚至儲存全域性變數的整個環境也是乙個表成為根表 root table construction...

Squirrel指令碼中的table和array

table table是由鍵值對 也被稱為槽 構成的輔助容器 值 value 可以是任何型別,鍵 key 也可以是任何型別除了null型別。table是squirrel的骨架,委託和許多其他特點的實現機制,甚至儲存全域性變數的整個環境也是乙個表成為根表 root table construction...