如下
--------------------------------
function f(a,b)
return a or b ;
endf(3);-- 返回3,而b=nil;
f(3,4);--返回3,4;
returnf ()語句會把 f ()返回的所有返回值都返回,而 return (f())會迫使它只能返回乙個結果。
--------------------------------
print(string.find("字串","目標字串"));--尋找目標字串在字串中的起始位置排位
eg:print(string.find("hello lua users","lua"));--返回的是7和9。如下圖
2. 函式 unpack ();
unpack();會接收乙個陣列作為引數,並從下標1開始返回該陣列元素。
print unpack 10 20 30 – 102030
a b=unpack 10 20 30 – a=10 b=20 30 被丟棄
unpack 經常用於函式引數傳遞。
a= {「hello」,「ll」}
string.find (unpack (a))
定義物件的方法
class={} -- 乙個物件
function class.func1()
endfunction class:func2()
end
在 lua 中使用「:」定義的函式會自動傳入乙個名為 self 的變數,self 同 c++ 中的 this 一樣,表示當前物件的指標;而「 .」定義的函式沒有 self 。
func1 ()和 func2 ()可以用如下方式等價起來:
function class : func2 end
function class . func1 self end – 傳入乙個 self 作為引數
function add(…)
local s=0
fori i,v in ipairs do
s= s+ v
endreturn s
endprint( add( 1 2 3 4 5 ) ) – 15
參數列中的 3 個點…表示該函式可以接受不同數量的實參。
閉包函式是指將乙個函式寫在另乙個函式之內,這個位於內部的函式可以訪問外部函
數中的區域性變數。
function newcounter()
local i=0
return function()
i= i+1
return i
endend
c1= new counter()
print( c1() )-- 1
print( c1() )-- 2
在這段**中,匿名函式訪問了乙個非區域性的變數 i ,i 用來保持乙個計數器。表面上
看,由於建立變數 i 的函式( newcounter )已經返回,所以之後每次呼叫匿名函式時,
i 均已超出了它的作用域;但是因為匿名函式一直在使用變數 i ,所以 lua 會正確地維護 i 的生命週期。
在匿名函式內部,i 既不是全域性變數,也不是區域性變數,它被稱為外部的區域性變數或upvalue。
以上的總結引用處是均出自cocos2d-x 之 lua 核心程式設計/劉克男著 .— 2 版 . —北京:清華大學出版社,201 Cocos2d x學習筆記1
1.建立新的cocos2d x 3.0 專案 在命令列中輸入 cocos new helloworld 專案名稱 p com.ss.pku 包名字 l cpp 專案型別 d d cocos workspace 專案存放路徑 2.資料夾分析 resource 資料夾 存放資源檔案 include和so...
Cocos2d x學習筆記(7)
1 動作基本概念 ccactiong是動作類的基類,動作作用於ccnode,因此,任何乙個動作都需要ccnode物件來執行。ccaction作為乙個基類,其實質是乙個介面 抽象類 由它派生的實現類才是實際使用的動作。ccaction的絕大多數實現類都派生自ccfinitetimeaction,這個類...
Cocos2d x動作學習筆記
action類如其名,它可以改變node物件的屬性,action物件是隨著時間改變node的屬性。任何乙個以node為基類的物件都有可執行的動作物件。例如,你可以在乙個時間段內將sprite精靈從乙個位置移動到另乙個位置。每個動作都有by和to兩個狀態。為什麼呢?因為它們所執行的結果是不同的。by相...