2015年3月24日 星期二

[Corona SDK] 再談Table

[Corona SDK] Table 的基本用法裡我們看到了table的用法,
事實上,Lua很多地方都有table的影子,
例如,我們提到t["name"]可以用t.name來存取,
耶?怎麼好像我們呼叫的Lua API也是長得很像,
沒錯,那些funtions就是用table把它們群組在一起,
例如display相關的API,就是有一個叫displaytable,
裡面有不同的index對應到不同的function,
所以...
display.newText( "ee", display.contentCenterX, 80, native.systemFont, 20 )
display["newText"]( "ee", display.contentCenterX, 80, native.systemFont, 20 )
上面兩種寫法都是可以的,
這個table還真是強大啊...

假如我們有很多功能相關的functions,
也是可以仿效這種作法,
用起來會和其它程式語言的method類似,

如果function只要傳參數進去,
那上面的方法很好用,
但如果是要對物件做操作呢?
例如,我們畫了一個矩形,並且對它做旋轉
local rec = display.newRect( 100, 100, 50, 50 )
rec.rotate(rec,45)
此時必須把要被旋轉的物件也傳進去,
通常是物件自己本身(當然也可以傳別的物件,不過這樣用法有點奇怪),
既然如此,Lua提供了一個稍微簡易的寫法
local rec = display.newRect( 100, 100, 50, 50 )
rec:rotate(45)
也就是用":"來取代".",此時就不用多傳一個物件參數

沒有留言:

張貼留言