跟諸子學(xué)游戲 Lua學(xué)習(xí)

Lua查找一個表元素時的規(guī)則,其實就是如下3個步驟:

1.在表中查找,如果找到,返回該元素,找不到則繼續(xù)

2.判斷該表是否有元表,如果沒有元表,返回nil,有元表則繼續(xù)。

3.判斷元表有沒有__index方法,如果__index方法為nil,則返回nil;如果__index方法是一個表,則重復(fù)1、2、3;如果__index方法是一個函數(shù),則返回該函數(shù)的返回值。

__newindex 元方法用來對表更新,__index則用來對表訪問 。當(dāng)你給表的一個缺少的索引賦值,解釋器就會查找__newindex 元方法:如果存在則調(diào)用這個函數(shù)而不進(jìn)行賦值操作。使用 rawset 函數(shù)來更新表:mytable = setmetatable({key1 = "value1"}, { __newindex = function(mytable, key, value)????????rawset(mytable, key, "\""..value.."\"") end})mytable.key1 = "new value"mytable.key2 = 4print(mytable.key1,mytable.key2);輸出new value????"4"

表的元方法:

__index ;__newindex ;__add?對應(yīng)的運算符?+ ;__sub?對應(yīng)的運算符?- ;__mul對應(yīng)的運算符?* ;__div對應(yīng)的運算符 '/';__mod對應(yīng)的運算符 '%';__unm對應(yīng)的運算符 '-';__concat對應(yīng)的運算符 '..';__eq對應(yīng)的運算符 '==';__lt對應(yīng)的運算符 '<';__le對應(yīng)的運算符 '<=';__call ;__tostring ;

自定義迭代函數(shù),Lua提供了pairs(全部遍歷)和ipairs(從1開始遍歷,當(dāng)下標(biāo)不連續(xù)時或者結(jié)束時中斷遍歷):

for 變量列表 in 迭代函數(shù) , 狀態(tài)變量 ,控制變量 do? 循環(huán)體 end? ?①:調(diào)用迭代函數(shù),把狀態(tài)變量和控制變量當(dāng)成參數(shù)傳遞給迭代函數(shù),狀態(tài)變量只會在第一次給迭代函數(shù)賦值,狀態(tài)變量表示結(jié)束迭代函數(shù)的條件,控制變量表示每次迭代變換,就會增加或者減少.②迭代函數(shù)如果返回nil,則退出for循環(huán),如果不是nil,把返回值賦值給變量列表,并執(zhí)行循環(huán)體,一般是返回2個值.

函數(shù)體 function square(state,control) if (control>state) then return nil else control = control+1 return control,control*control end end? ? ? ? ? ? ? ? ? ? ? 循環(huán)體:for i,j in square ,3,0 do print(i,j) end 結(jié)果 1,1? ? 2,4? 3,9

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 第一篇 語言 第0章 序言 Lua僅讓你用少量的代碼解決關(guān)鍵問題。 Lua所提供的機(jī)制是C不擅長的:高級語言,動態(tài)...
    testfor閱讀 2,935評論 1 7
  • Lua 5.1 參考手冊 by Roberto Ierusalimschy, Luiz Henrique de F...
    蘇黎九歌閱讀 14,235評論 0 38
  • 發(fā)文 紀(jì)念一下 2017第一個肚子餓的時刻 混著脖子肩膀酸痛 繼續(xù)寫作業(yè) 什么? noble art有拳擊的意思…...
    去社閱讀 179評論 0 0
  • 創(chuàng)業(yè)就是玩游戲,打怪升級弄裝備,整天為了游戲幣斤斤計較,其實這玩意兒生不帶來,死不帶去,若是有一天不玩了,會覺得挺...
    徐呆瓜閱讀 412評論 0 2
  • 火車快要駛出福建的時候,已是午夜,車廂有點空,應(yīng)該還不到十個人吧。燈已關(guān)掉一半,有點昏暗,但看書還是足夠了。...
    qd不古閱讀 12,307評論 1 49

友情鏈接更多精彩內(nèi)容