函式是對語句和表示式進行抽象的主要方式,呼叫函式時應使用一堆圓括號把引數列表括起來,即使不需要引數,也需要一對空括號()。
lua語言也為物件導向風格的呼叫(object-oriented call)提供了冒號操作符。形如 o:foo(x) 意為呼叫物件o的foo方法。
乙個函式定義具有乙個函式名( name), 乙個參數列組成的列表和由一組語句組成的函式體。
function add (a)
local sum = 0
for i = 1, #a do
sum = sum + a[i]
endreturn sum
end
如果呼叫函式時使用的引數個數與定義時的引數個數不一致, lua語言會通過拋棄多餘引數和將不足引數設為nil的方式來調整引數個數。
lua語言中允許乙個函式返回多個結果
s, e = string.find("hello lua users", "lua")
print(s, e) --> 7 9
lua語言會根據函式被呼叫的情況調整返回值的數量。
function add (...)
local s = 0
for _, v in ipairs do
s = s + v
endreturn s
endprint(add(3, 4, 10, 25, 12)) -->54
引數列表中的三個點(...)表示函式引數是可變長的。
實際上可以通過變長引數來模擬lua語言中的普通引數傳遞機制
function foo (a, b, c)
function foo (...)
local a,b,c = ...
函式可使用表示式將可變長引數放在乙個表中,同時lua語言還提供了函式table.pack來判斷原始引數是否以nil結尾。
function nonils (...)
local arg = table.pack(...)
for i = 1, arg.n do
if arg[i] == nil then return false end
endreturn true
end
另一種遍歷函式的可變長引數的方法是使用函式select
function add (...)
local s = 0
for i = 1, select("#", ...) do
s = s + select(i, ...)
endreturn s
end
Lua程式設計筆錄 Lua初識及語法七(I O操作)
lua i o 庫用於讀取和處理檔案。分為簡單模式 和c一樣 完全模式。簡單模式在做一些簡單的檔案操作時較為合適。但是在進行一些高階的檔案操作的時候,簡單模式就顯得力不從心。例如同時讀取多個檔案這樣的操作,使用完全模式則較為合適。開啟檔案操作語句如下 file io open filename mo...
Lua程式設計(七)協同程式基礎邏輯
co coroutine.create function print hi end print coroutine.status co coroutine.resume co print coroutine.status co print co coroutine.create function f...
Lua程式設計(三)
通過昨天用lua程式語言解決八皇后問題,我對於lua語言的程式編寫有了大致的了解。今天開始了解lua的數值相關概念。在lua5.3中為數值格式提供了兩種選擇 一種為64位的integer型別,另一種則是雙精度的float型別。如果是資源受限的平台,如微控制器等我們可以使用精簡的32位數值格式。lua...