小白学习之((Lua 05))

来源:互联网 发布:windows下脚本编程实例 编辑:程序博客网 时间:2024/06/10 16:00
--第五章 函数
--Lua 为面对对象的调用提供了一种特殊的语法 冒号操作符

--o.foo(o,x) 和 o:foo(x)一样


function f(a, b)
-- body
return a or b 
end


--调用
f(1) -- a = 1, b = nil
f(1, 2) -- a = 1, b = 2
f(1, 2, 3) -- a = 1, b = 2, 3被丢弃


--5.1 多重返回值
function f(a, b)
-- body
return a, b
end


print(f(100, 200))


--Lua 会调整一个函数的返回值数量以适应不同的调试情况,若将函数调用作为
--一条单独的语句时,Lua 会丢弃所有返回值,若将函数作为表达式的一部分来
--调用时,Lua 只保留函数的第一个返回值,
function f(a, b)
-- body
return a, b
end


--通过以下示例个人理解是,此时函数表达式除了第一个以外其他的函数表达式
--都是作为表达式的一部分,而最后一个又有点不同Lua 会根据需要需要赋值的
--变量的个数去动态保留几个返回值(个人理解仅供参考)
x, y = f(1, 2)
x, y = f(1, 2), 20
x, y, z = f(1, 2), 20, 30
x, y, z = 20, f(1, 2)
print(x)
print(y)
print(z)


--
t = {f(1, 2)} -- t = {"1", "2"}
print(t[1])
print(t[2])


t = {1, f(100, 200)} -- t = {"1", "100", "200"}
print(t[1])
print(t[2])
print(t[3])


t = {1, f(100, 200), 2} -- t = {"1", "100", "2"}
print(t[1])
print(t[2])
print(t[3])


--5.2 可变参数
function f( ... ) -- ... (表示可变参数)
-- body
end


--5.3 具名实参
--没大懂感觉有点像C++的默认参数
0 0