参考笔记:ttp://www.lua.org/pil/5.html
1.函数调用规则
和其他语言一样,调用一般使用括号。
print(8*9,9/8)
a=math.sin(3) + math.cos(10)
print(os.date())
需要注意的一点是:如果函数只有一个参数,且改参数是字符串或者表构造器,括号则可有可无。
print "Hello World" --> print("Hello World")
dofile 'a.lua' -->dofile('a.lua')
print [[a multi-line message]] -->print([[a multi-line message]])
f{x=10,y=20} -->f({x=10,y=20})
type{} -->type({})
冒号运算符
o:foo(x) --类似于o.f(o,x),将o作为第一个额外的参数。
调用参数数目
由于Lua对函数参数数目进行了调整,因此可以输入的参数数目能够与函数定义的参数数目不同,多余的参数值将被丢弃,而未被赋值的参数将得到nil。
function f(a,b) return a or b end
-Call Parameters
-f(3) a=3,b=nil
-f(3,4) a=3,b=4
-f(3,4,5) a=3,b=4 (5被丢弃)
在函数中返回多个值。
function maximum(a)
local mi = 1 ---maximum index
local m = a[mi] --maximum value
for i, val in ipairs(a) do
if val > m then
mi = i
m = val
end
end
return m, mi
end
调用不同数目的参数
使用unpack
f = string.find
a = {"hello", "11"}
f(unpack(a)) --- string.find("hello", "ll")
使用递归实现的unpack()
function unpack(t,i)
i = i or 1
if t[i] ~= nil then
return t[i], unpack(t, i+1)
end
end