本文同步發表於個人網站
nil
是Lua裡的一個特殊值,代表什麼也沒有。其型別也是nil
type(nil) -- => nil
布林值只有true
和false
只要不是nil
或是false
都為真, 包含0、空表、空字串 。
這與目前多數主流語言不同,需要特別注意!
if 0 then
print("0 is true")
end
if {} then
print("{} is true")
end
if "" then
print [["" is true]]
end
相對來說只有nil
和false
為假。
Lua的邏輯運算與大多數語言相同,除了不等於~=
if 1 ~= 2 then
print "1 not equal 2"
end
在之前看到的Lua關鍵字一覽中包含and
、not
、or
等等。是的,與Python一樣,使用語意化的方式設計。
weeks = {"週一","週二","週三","週四","週五","週六","週日", "Opps"}
if #weeks ~= 7 then
error("Weeks length must is 7.")
end
上面因為周名稱多寫一個,會引發錯誤。(是的,先偷渡一個錯誤處理的概念)
weeks = {"週一","週二","週三","週四","週五","週六","週日"}
today = 5
if #weeks ~= 7 or #weeks < today then
error("Weeks length must is 7 or today is more then weeks length.")
elseif today > 0 and math.tointeger(today) then -- 如果 today 大於0 且為整數
print(string.format([[Today is %s]], weeks[today]))
end
-- Output: Today is 週五
uh?...一件簡單的事情好像給搞的很複雜??
算了,應該都懂,要不記住幾件事情就好:
nil
和false
為假值,其餘為真。nil
的type
為nil
。某語言
null
的型別為object
?
Opps! 沒引戰意思,當初語言設計的初衷本就有些不同。
而外分享:Lua在很多方面与javascript类似,甚至LuaJit存在效率优势,但是为何Lua框架流行度远低于node.js?
※ Note: 這張圖數據有點舊,參考就好。