本人初学者,有错误希望能帮忙指正。
1——————逻辑符
--[[如果a为false,则返回a,否则返回b]]
a or b
--[[如果a为true,则返回a,否则返回b]]
x=x or v
--[[当x为nil或false时,把v的值赋给x]]
--[[等价于]]
if not x then
x=v
end
--[[C 语言中的 a?b:c在lua中用 (a and b) or c]]
2————————返回比对的第几个值
--[[只想要string.find返回的第二个值,典型的方法是使用哑元(dummy variable,下划线)]]
local _,x=string.find(s,p)
--[[get x]]
--[[另一种是可变参数的一种应用]]
function select(n,...)
return(arg[n])
end
select(n,string.find(s,p))
--[[获取第n个返回值,推荐]]
3————————Lua 具名实参(通过table实现可选参数函数)
--[[检查参数和设置默认参数值的函数]]
function func1(a)
print("this is fakeone")
--[[
if func_os~=nil and func_3~=nil then
func_os(func_3)
end
]]
_func1(a.x,a.func_os or nil,a.func_3 or nil)
end
--[[真正实现功能的函数]]
function _func1(x,func_os,func_3)
print("this is correct one")
if func_os~=nil and func_3~=nil then
func_os(func_3)
end
print(type(func_os),type(func_3))
end
function func2(func_os)
print("this is two")
func_os()
end
function func3(...)
print("this is three")
end
for line in io.lines() do
if "1"==line then
--[[func1({x=line,func_os=func2,func_3=func3})]]
local a={x=line,func_os=func2,func_3=func3}
func1(a)
else
break
end
end