Lua程式設計(七)

2021-09-02 01:39:28 字數 1366 閱讀 9108

函式是對語句和表示式進行抽象的主要方式,呼叫函式時應使用一堆圓括號把引數列表括起來,即使不需要引數,也需要一對空括號()。

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