在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...