lua小問題總結

  • 首先是表的問題

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))

--他會一直在輸出

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章