Lua函式用法研究

2022-09-26 19:06:15 字數 1333 閱讀 6656

在lua 基本程式設計客棧語法快速入門 中有涉及到函式的用hljhpnll法,但只是普通的應用,並沒有深成次的研究一下,介於函式用的還是比較多的就專門做個專題研究一下~ 

一、函式、變數的用法

函式的定義用關鍵字function 。然後加函式名和變數。注意後面沒有do。最後以end結束。

在函式中的變數預設是全域性變數,但通常情況下函式中的變數都是在函式中有效的。所以要在宣告的時候加上"local」 標明只在區域性有效。

二、返回多個結果值

在lua中的函式可以返回多個返回值程式設計客棧。這與c等語言有很hljhpnll大的不同。因為從根本上講lua支援多賦值。

我猜測在內部執行時,多個返回值被封裝到了乙個table中。然後在賦值時再按順序取出。

看這個示例:             

function max(a)

local mi = 1

local m = a[mi]

for i,val in ipairs(a) do --其中i為順序位置,val為相應的值

print("i= "..i.."val="..val)

if val >m then

mi = i

m = val

end

end

return m,mi

end

print(max())

這個函式的作用是返回乙個數列中最大的值和下標。

在實際應用的過程中,在c中呼叫lua_pcall(l,0,2,0) 即可接受這兩個返回值入棧,然後通過 lua_tonumber(l,-1) 和 lua_tonumber(l,-2)即可

三、可變引數

lua 函式可以接受可變數目的引數,和 c 語言類似在函式引數列表中使用三點(...)表示函式有可變的引數。

lua 將函式的引數放在乙個叫 arg 的表中,除了引數以外,arg表中還有程式設計客棧乙個域 n 表示引數的個數。

例如: 

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

本文標題: lua函式用法研究

本文位址:

Lua 函式冒號 點 self 的用法

在理解到函式的用法,需要先理解幾個 lua中的 表 的功能。語法 myclass 使用冒號宣告函式 function myclass myfuna body end 使用點宣告函式 function myclass.myfunb body endreturn分析 定義函式 function mycl...

Lua 函式 函式

在lua中,函式是一種對語句和表示式進行抽象的主要機制。函式既可以完成某項特定的任務,也可以只做一些計算並返回結果。lua具有一項非常於總不同的特徵,允許函式返回多個結果 s,e string.find hello lua users lua print s,e 7 9 以lua編寫的函式同樣可以返...

舉例簡介Lua中函式的基本用法

複製 如下 function fib n if n 2 then return 1 end return fib n 2 fib n 1 end複製 如下 支援閉包及匿名函式 function adder x 呼叫adder時,會建立用於返回的函式,並且能記住變數x的值 return functio...