lua——函數

1,使用函數時必須帶圓括號,除非函數只有一個參數,且此參數是字面字符串或者table構造式。

2,lua爲面向對象式的調用提供了一種特殊的語法-冒號操作符。o:foo(x)==o.foo(o,x);

3,無論函數使用lua編寫的還是用c編寫的,在調用它時沒有任何區別。

4,lua可以返回多個結果,只需在return後面列出所有的返回值即可。

5,lua調用一個函數的返回值數量以適應不同的調用情況:

   函數調用作爲一條單獨語句時,lua會丟棄函數的所有返回值。

   若將函數作爲表達式的一部分來調用,lua只保留函數的第一個返回值。

   當一個函數調用是一系列表達式中的最後一個元素(或僅有一個元素)時,才能獲得它的所有返回值

   所謂的一系列表達式有4種情況:

   function foo2() return "a","b" end

   1,多重賦值:x,y =foo2(),20; - - x="a",y=20;

   2,實參列表:print(foo2(),1); - - >a 1

   3,table 構造式:t={foo2(),4} -- t[1]="a",t[2]=4;

   4,return語句:return foo2(); -- 這裏不要加圓括號,否則只返回一個值。

6,unpack():接受一個數組作爲參數,並從小標1開始返回該數組的所有元素。

7,變長參數: "..."  select 來遍歷一個函數的所有變長參數。

8,具名實參:直接受一個參數,實參只有一個table構造式。

9,函數是第一類值,與其他傳統的類型的值有相同的權利。

          table.sort(network,function(a,b) return (a.name>b.name) end)

10,closure 閉合函數:

11,”詞法域“,一個函數寫在另一個函數內部,便可以訪問外部函數的局部變量的特徵。

12,非全局的函數:

13,正確的尾調用:當一個函數的調用是另一個函數的最後一個動作時,該調用纔算是一條尾調用。

     只有return <func>(<args>) 這樣的形形式纔算是一條尾調用。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章