国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 開(kāi)發(fā) > 綜合 > 正文

Lua函數(shù)用法研究

2024-07-21 23:04:58
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

在Lua 基本語(yǔ)法快速入門 中有涉及到函數(shù)的用法,但只是普通的應(yīng)用,并沒(méi)有深成次的研究一下,介于函數(shù)用的還是比較多的就專門做個(gè)專題研究一下~ 
 
一、函數(shù)、變量的用法

函數(shù)的定義用關(guān)鍵字function 。然后加函數(shù)名和變量。注意后面沒(méi)有do。最后以end結(jié)束。

在函數(shù)中的變量默認(rèn)是全局變量,但通常情況下函數(shù)中的變量都是在函數(shù)中有效的。所以要在聲明的時(shí)候加上"local” 標(biāo)明只在局部有效。
二、返回多個(gè)結(jié)果值

在Lua中的函數(shù)可以返回多個(gè)返回值。這與C等語(yǔ)言有很大的不同。因?yàn)閺母旧现vLua支持多賦值。

我猜測(cè)在內(nèi)部運(yùn)行時(shí),多個(gè)返回值被封裝到了一個(gè)table中。然后在賦值時(shí)再按順序取出。
看這個(gè)示例:             

function max(a)  local mi = 1  local m = a[mi]  for i,val in ipairs(a) do  --其中i為順序位置,val為相應(yīng)的值   print("i= "..i.."val="..val)   if val >m then    mi = i    m = val   end  end  return m,mi end  print(max({8,10,23,12,5})) 

   

這個(gè)函數(shù)的作用是返回一個(gè)數(shù)列中最大的值和下標(biāo)。

在實(shí)際應(yīng)用的過(guò)程中,在C中調(diào)用lua_pcall(L,0,2,0) 即可接受這兩個(gè)返回值入棧,然后通過(guò) lua_tonumber(L,-1) 和 lua_tonumber(L,-2)即可
三、可變參數(shù)

Lua 函數(shù)可以接受可變數(shù)目的參數(shù),和 C 語(yǔ)言類似在函數(shù)參數(shù)列表中使用三點(diǎn)(...)表示函數(shù)有可變的參數(shù)。

Lua 將函數(shù)的參數(shù)放在一個(gè)叫 arg 的表中,除了參數(shù)以外,arg表中還有一個(gè)域 n 表示參數(shù)的個(gè)數(shù)。

例如:
 

function myprint(...)  local printResult = ""  --如果不顯式聲明,程序會(huì)自動(dòng)檢查全局的變量,會(huì)找不到出錯(cuò)  print(arg.n)  for i,v in ipairs(arg) do   printResult = printResult..tostring(v)..'/t'  end  printResult=printResult..'/n'  return printResult end  print(myprint(2,4,6,'2es')) 

 

 
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 上栗县| 陆良县| 新安县| 扎赉特旗| 邵武市| 历史| 富裕县| 扎囊县| 新巴尔虎左旗| 鹿邑县| 枝江市| 东乡| 新民市| 南城县| 贵定县| 宣武区| 英吉沙县| 克什克腾旗| 元阳县| 砚山县| 东源县| 农安县| 九寨沟县| 柳州市| 恭城| 广饶县| 雷波县| 岳普湖县| 丹巴县| 基隆市| 太湖县| 广河县| 偏关县| 闸北区| 洞头县| 辽阳县| 广元市| 绥滨县| 凌云县| 平定县| 长岛县|