Lua 函数
发布时间:2020-12-14 21:57:25 所属栏目:大数据 来源:网络整理
导读:Lua中的函数参数如果是string或表构造器,则圆括号可以忽略掉。 print "Hello World" -- print("Hello World") dofile 'a.lua' -- dofile ('a.lua') print [[a multi-line -- print([[a multi-line message]] message]] )f{x= 10 ,y= 20 } -- f({x=10,y=20})
Lua中的函数参数如果是string或表构造器,则圆括号可以忽略掉。 print "Hello World" <--> print("Hello World")
dofile 'a.lua' <--> dofile ('a.lua')
print [[a multi-line <--> print([[a multi-line message]] message]])
f{x=10,y=20} <--> f({x=10,y=20})
type{} <--> type({})
Lua也提供了一种语法像 Lua的实参和形参个数也提供了像多重赋值一样的机制,多余的实参自动被抛弃,多余的形参自动补为nil。 1.返回多个值 s,e = string.find("hello Lua users","Lua")
print(s,e) --> 7 9
function maximum (a)
local mi = 1 -- index of the maximum value
local m = a[mi] -- maximum value
for i = 1,#a do
if a[i] > m then
mi = i; m = a[i]
end
end
return m,mi
end
print(maximum({8,10,23,12,5})) --> 23 3
如果函数调用不是在多重赋值列表中的最后一个非空元素,通常会取函数返回值的第一个值: x,y = foo2(),20 -- x="a",y=20
你可以通过原括号,强制接收一个返回结果: print((foo2())) --> a
由于C语言的可变参数个数函数参数只能接受固定个数的实参,所以可以使用table.unpack()来完成这一任务: print(table.unpack{10,20,30}) --> 10 20 30
a,b = table.unpack{10,30} -- a=10,b=20,30 is discarded
table.unpack的lua实现如下: function unpack (t,i,n)
i = i or 1
n = n or #t
if i <= n then
return t[i],unpack(t,i + 1,n)
end
end
2.可变参数 function add (...)
local s = 0
for i,v in ipairs{...} do
s = s + v
end
return s
end
print(add(3,4,25,12)) --> 54
function fwrite (fmt,...)
return io.write(string.format(fmt,...))
end
pack是lua5.2才有的语法,用于将参数打包: function nonils (...)
local arg = table.pack(...)
for i = 1,arg.n do
if arg[i] == nil then return false end
end
return true
end
print(nonils(2,3,nil)) --> false
print(nonils(2,3)) --> true
print(nonils()) --> true
print(nonils(nil)) --> false
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |