lua函式精講(一)
lua函式的實參與形參的匹配與賦值語句類似,多餘部分被忽略,缺少部分nil補足。 lua函式可以返回多個值,return後列出要返回值的列表即可返回多值 s, e = string.find("hello lua", "lua")
那麼,lua是如何調整函式返回值的個數來適應呼叫環境的呢? 1. use as statement,所以返回值被忽略。 2. use as expression
- 當作為表示式最後一個引數或僅有的一個引數時,根據變數個數,函式儘可能多地返回多個值,不足補nil,超出捨去。
- 其他情況函式呼叫返回第一個值(如果無返回值為nil)
- 函式呼叫作為函式引數被呼叫時,和多值賦值相同
- 函式呼叫在表構造中初始化時,和多值賦值相同
- return f(); f()返回所有值。可以使用括號強制返回一個值return (f())
print(select("#", ...))
end
)
function select(n, ...) return arg[n] end 給函式引數命名:可以把表作為函式的唯一引數來實現命名引數的功能。 rename {old="temp.lua", new="temp1.lua"} function rename(arg) os.rename(arg.old, arg.new) end 當引數比較多,或容易混淆時,可以採用命名引數。 完 ------------------ 2015/3/3:新版lua沒有名叫arg的表了。