- 首先是表的問題
tab = {a = "jiang",["sunc"] = "xx",mimi= 2}
print(tab["sunc"])
print(tab["mimi"])
輸出:
xx
2
我是第一次遇到關鍵字帶[]這種寫法的
- 關於表的第二個
function nonils(...)
local arg = table.pack(...)
for i = 1,arg.n do
print(arg[i])
if arg[i] == nil then return false end
end
return true
end
print(nonils(2,3,nil))
--[[
這是針對可變長參數的使用吧
tab.pack會打包成一個表,但是會保留額外的關鍵字n,用來記錄數量,這種方法有一些問題。
table.pack (···)
Returns a new table with all arguments stored into keys 1, 2, etc. and with a field "n" with the total number of arguments. Note that the resulting table may not be a sequence.
注意:結果表可能不是一個序列,可能不是按照順序打包
--]]
- 第二個問題是括號的問題
function abc()
a,b,c = 1,2,3
return a,b,c
end
print(abc())
print((abc()))
--[[
輸出:
>Exit code: 0
>lua "stable.lua"
1 2 3
1
>Exit code: 0
--]]
- 關於尾調用的理解
尾調用意味着lua可以正確的進行尾遞歸,就是有時候,進行尾遞歸不需要考慮棧的溢出,他可能執行不出來,但是他不會報錯
比如:
function foo(n)
if n >0 then print(n) return foo(n-1) end
end
print(foo(1000000000))
--他會一直在輸出