當(dāng)一個方法返回多個值時,有些返回值有時候用不到,要是聲明很多變量來一一接收,顯然不太合適(不是不能)。Lua 提供了一個虛變量(dummy variable),以單個下劃線(“_”)來命名,用它來丟棄不需要的數(shù)值,僅僅起到占位的作用。
看一段示例代碼:
-- string.find (s,p) 從string 變量s的開頭向后匹配 string
-- p,若匹配不成功,返回nil,若匹配成功,返回第一次匹配成功
-- 的起止下標(biāo)。
local start, finish = string.find("hello", "he") --start 值為起始下標(biāo),finish
--值為結(jié)束下標(biāo)
print ( start, finish ) --輸出 1 2
local start = string.find("hello", "he") -- start值為起始下標(biāo)
print ( start ) -- 輸出 1
local _,finish = string.find("hello", "he") --采用虛變量(即下劃線),接收起
--始下標(biāo)值,然后丟棄,finish接收
--結(jié)束下標(biāo)值
print ( finish ) --輸出 2
代碼倒數(shù)第二行,定義了一個用 local 修飾的 虛變量
(即 單個下劃線)。使用這個虛變量接收 string.find() 第一個返回值,靜默丟掉,這樣就直接得到第二個返回值了。
虛變量不僅僅可以被用在返回值,還可以用在迭代等。
在for循環(huán)中的使用:
-- test.lua 文件
local t = {1, 3, 5}
print("all data:")
for i,v in ipairs(t) do
print(i,v)
end
print("")
print("part data:")
for _,v in ipairs(t) do
print(v)
end
執(zhí)行結(jié)果:
# luajit test.lua
all data:
1 1
2 3
3 5
part data:
1
3
5