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...