呼叫函式的時候,如果引數列表為空,必須使用()表明是函式呼叫,例如:
os.date()當函式只有乙個引數並且這個引數是字串或者table構造器的時候,可以省略函式呼叫操作符"()",例如:
"hello world
"dofile
"a.lua
"f
obj::foo(x)實參和形參結合時,多餘部分被忽略,不足補充nil,例如:obj.foo(obj, x)
function f(a,b) return a or b end假設有3個函式:f(3) --
a=3, b=nil
f(3,4) --
a=3, b=4
f(3,4,5) --
a=3, b=4, 5 is discarded
function foo0() end如果只想接收指定的返回值,可以使用啞元(dummy variable),例如:function foo1() return'a
'end
function foo2() return'a
', 'b'
end
_,x = foo2()另一種方式是使用select函式:print(x) -- 'b'
select(index, ...),返回所有》=index的引數;當index='#',返回引數個數
function foo3() return'a在表示式中呼叫函式時:', '
b', 'c'
endprint(select(1, foo3())) --
a b c
print(select(2, foo3())) --
a bprint(select(3, foo3())) --
aprint(select('
#', foo3())) --
3
1、當函式呼叫作為表示式最後乙個引數(或僅有乙個引數)時,函式盡可能多地返回多個值,不足補nil,超出捨去;
2、其他情況下,函式呼叫僅返回第乙個值(如果沒有返回值為nil);
x,y=foo2() --函式呼叫在table構造器中使用時:x='a',y='b'
x=foo2() --
x='a', 'b' is discarded
x,y,z=10,foo2() --
x='10',y='a',z='b'
x,y=foo0() --
x=nil,y=nil
x,y=foo1() --
x='a', y=nil
x,y,z=foo2() --
x='a', y='b',z=nil
x,y=foo2(),20
--x='a',y=20
x,y=foo0(),20,30
--x=nil,y=20, 30 is discarded
x,y,z=foo0(),foo2() --
x=nil,y='a',z='b'
a = --函式呼叫作為函式引數被使用時:a={}, a is empty
a = --
a=a = --
a=
print (foo0()) --可以使用圓括號"()"強制使呼叫只返回乙個值:print (foo1()) --
aprint (foo2()) --
a bprint (foo2() .. '
x') --
ax
print ((foo0())) --unpack 函式接受乙個陣列作為輸入引數,並返回陣列的所有元素。nilprint ((foo1())) --
aprint ((foo2())) --
a
a=上面的print函式可以列印可變引數。print(unpack(a)) --
england 960 china 30
在lua中,使用 ... 表示可變引數,在函式中可變引數會存放在arg的乙個table中,它有乙個域n表示引數個數。
function g(a,b,...)如上面所示,lua會將前面的實參傳給固定引數,後面的實參放在arg表中。result = ""
for i,v in
ipairs(arg) do
result = result .. tostring(v) .. '\t'
end result = result .. '\n'
end
g(3) --
a=3, b=nil, arg=
g(3,4) --
a=3, b=4, arg=
g(3,4,5,8) --
a=3, b=4, arg=
lua入門之一函式
1 函式 2function max num1,num2 3if num1 num2 then 4 result num1 5else 6 result num2 7end 8return result 9end 1011 print max 1,150 max 1,150 1213 14 lua ...
lua菜鳥教程 LUA學習之一 初次接觸
對於乙個開源工程,開始學習它的第一步自然是編譯工程。使用vc編譯lua,在網上已有許多介紹,但 紙上得來終覺淺 自己走一遍還是有必要的。步驟如下 2.開啟vc建立乙個solution,就叫lua.sln 3.建立乙個名為liblua的project lua庫 新增除lua.c和luac.c以外的所有...
Lua原始碼解析之一 lexical
我們知道,任何高階一點的編譯器,在解析源 時,都需要進行詞法分析。而詞法分析的過程就是先識別token的乙個過程,總體來說,lua裡面的token大致分為 1.數字和字串 2.特殊字元 包括運算子和括號 對於每一類token lua都有唯一的id與之對應,此id用int來表示,對於第2種型別,直接用...