溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

lua——函數(shù)

發(fā)布時間:2020-07-09 13:01:40 來源:網(wǎng)絡(luò) 閱讀:386 作者:cgw0827 欄目:開發(fā)技術(shù)

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

2,lua為面向?qū)ο笫降恼{(diào)用提供了一種特殊的語法-冒號操作符。o:foo(x)==o.foo(o,x);

3,無論函數(shù)使用lua編寫的還是用c編寫的,在調(diào)用它時沒有任何區(qū)別。

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

5,lua調(diào)用一個函數(shù)的返回值數(shù)量以適應(yīng)不同的調(diào)用情況:

   函數(shù)調(diào)用作為一條單獨(dú)語句時,lua會丟棄函數(shù)的所有返回值。

   若將函數(shù)作為表達(dá)式的一部分來調(diào)用,lua只保留函數(shù)的第一個返回值。

   當(dāng)一個函數(shù)調(diào)用是一系列表達(dá)式中的最后一個元素(或僅有一個元素)時,才能獲得它的所有返回值

   所謂的一系列表達(dá)式有4種情況:

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

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

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

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

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

6,unpack():接受一個數(shù)組作為參數(shù),并從小標(biāo)1開始返回該數(shù)組的所有元素。

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

8,具名實(shí)參:直接受一個參數(shù),實(shí)參只有一個table構(gòu)造式。

9,函數(shù)是第一類值,與其他傳統(tǒng)的類型的值有相同的權(quán)利。

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

10,closure 閉合函數(shù):

11,”詞法域“,一個函數(shù)寫在另一個函數(shù)內(nèi)部,便可以訪問外部函數(shù)的局部變量的特征。

12,非全局的函數(shù):

13,正確的尾調(diào)用:當(dāng)一個函數(shù)的調(diào)用是另一個函數(shù)的最后一個動作時,該調(diào)用才算是一條尾調(diào)用。

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



向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI