欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Lua函數(shù)用法研究

 更新時間:2015年07月09日 10:13:12   投稿:junjie  
這篇文章主要介紹了Lua函數(shù)用法研究,本文講解了函數(shù)、變量的用法、返回多個結(jié)果值和可變參數(shù)等特性的示例,需要的朋友可以參考下

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

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

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

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

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

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})) 

   

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

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

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

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

例如:
 

function myprint(...) 
 local printResult = ""  --如果不顯式聲明,程序會自動檢查全局的變量,會找不到出錯 
 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')) 

相關(guān)文章

  • 在Lua中使用模塊的基礎(chǔ)教程

    在Lua中使用模塊的基礎(chǔ)教程

    這篇文章主要介紹了在Lua中模塊的基本使用方法,是Lua入門學(xué)習(xí)中的基礎(chǔ)知識,需要的朋友可以參考下
    2015-05-05
  • Lua教程(八):數(shù)據(jù)持久化

    Lua教程(八):數(shù)據(jù)持久化

    這篇文章主要介紹了Lua教程(八):數(shù)據(jù)持久化,本文講解了數(shù)據(jù)文件持久化、序列化兩部份內(nèi)容,需要的朋友可以參考下
    2015-04-04
  • Lua中關(guān)于求模與求余的區(qū)別介紹

    Lua中關(guān)于求模與求余的區(qū)別介紹

    這篇文章主要介紹了Lua中關(guān)于求模與求余的區(qū)別介紹,我覺得很多人搞不清楚這兩個概念的區(qū)別,剛好在翻譯lua手冊時遇到%與math.fmod這兩個操作,順便做一下說明吧,需要的朋友可以參考下
    2015-04-04
  • Lua實(shí)現(xiàn)正序和倒序的文件讀取方法

    Lua實(shí)現(xiàn)正序和倒序的文件讀取方法

    這篇文章主要介紹了Lua實(shí)現(xiàn)正序和倒序的文件讀取方法,本文講解使用table生成鏈表完成正序和倒序的文件讀入功能,需要的朋友可以參考下
    2015-04-04
  • Lua的堆棧淺析

    Lua的堆棧淺析

    這篇文章主要介紹了Lua的堆棧淺析,本文參考游戲人工智能編程案例精粹中的Lua堆棧索引圖,畫出了自己的一張理解圖,需要的朋友可以參考下
    2014-09-09
  • Lua和C語言的交互詳解

    Lua和C語言的交互詳解

    這篇文章主要介紹了Lua和C語言的交互詳解,Lua和C語言通過棧完成交互,本文結(jié)合代碼實(shí)例詳細(xì)講解了交互的方法,需要的朋友可以參考下
    2014-09-09
  • Lua教程(二十二):userdata

    Lua教程(二十二):userdata

    這篇文章主要介紹了Lua教程(二十二):userdata,這里我們通過一個簡單完整的示例來學(xué)習(xí)一下Lua中userdata的使用方式,需要的朋友可以參考下
    2015-04-04
  • 利用Lua定制Redis命令的方法詳解

    利用Lua定制Redis命令的方法詳解

    這篇文章主要給大家介紹了關(guān)于利用Lua定制Redis命令的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2018-03-03
  • Luvit像Node.js一樣寫Lua應(yīng)用

    Luvit像Node.js一樣寫Lua應(yīng)用

    今天小編就為大家分享一篇關(guān)于Luvit像Node.js一樣寫Lua應(yīng)用,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2018-12-12
  • Lua讀寫文件代碼示例

    Lua讀寫文件代碼示例

    這篇文章主要介紹了Lua讀寫文件代碼示例,本文講解了讀寫文件的模式以及讀寫文件代碼實(shí)例,需要的朋友可以參考下
    2015-04-04

最新評論