lua學習筆記---Function(函式)
阿新 • • 發佈:2019-02-03
function 我暫且叫他函式,類似於C語言中的指標,但是比指標更強大。
形式:
function –關鍵字
函式名(引數列表)
return 分支
end
例如:
function add(a,b)
return a + b
end
print(add(1,3))
4
其中,return 一定要寫在 end的前面。如果中間要有一個 return的話 可以使用 do …. end 來將其包住。
> function max (a,b)
>> do
>> if(a > b)then return a end
>> if(a < b)then return b end
>> end
>> end
> print(max(1,2))
2
> print(max(3,2))
3
又如:
> function xxx(sum)
>> if(sum == 0)then do return 0 end end
>> return sum
>> end
> print(xxx(0))
0
> print(xxx(12))
12
以上目前還沒找到中間出現return時,do … end最佳包方式。如果找到之後一定會在評論中列出。
因為lua語言一切都是變數
我們可以將function寫成如下形式:
> add = function (a,b) return a + b end
> print(add(1,1))
2
> add = nil
> print(add(1,1))
stdin:1: attempt to call global 'add' (a nil value)
stack traceback:
stdin:1: in main chunk
[C]: ?
> add = 12
> print(add)
12
如此,我們可以看到很像C語言中的指標,我們也可以將add = nil 告訴垃圾回收器回收,也可以給其其他型別的值。
讓我感到更牛X的是 function竟能返回多個結果;
例如:
> function getNum()
>> return 10,11,32
>> end
> a,b,c = getNum()
> print(a,b,c)
10 11 32
結合表(陣列)實現面向物件程式設計。
> T = {
>> age = 10,
>> add = function(this,b)this.age = 11 end }
> print(T["age"])
10
> print(T.age)
10
> T.add(T,20)
> print(T.age)
11
> T:add(25)
> print(T.age)
11
T:add(25) = T.add(T,25)
總結一下:多返回;可面向物件;加end