1. 程式人生 > >lua學習筆記---Function(函式)

lua學習筆記---Function(函式)

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