iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 10
0
Software Development

30天 Lua重拾筆記系列 第 10

【30天Lua重拾筆記10】基礎1: 類型-布林和nil

  • 分享至 

  • xImage
  •  

本文同步發表於個人網站

nil

nil是Lua裡的一個特殊值,代表什麼也沒有。其型別也是nil

type(nil) -- => nil

布林

布林值只有truefalse

真值

只要不是nil或是false都為真, 包含0、空表、空字串

這與目前多數主流語言不同,需要特別注意!

if 0 then
  print("0 is true")
end

if {} then
  print("{} is true")
end

if "" then
  print [["" is true]]
end

假值

相對來說只有nilfalse為假。

邏輯運算

Lua的邏輯運算與大多數語言相同,除了不等於~=

if 1 ~= 2 then
  print "1 not equal 2"
end

邏輯運算

在之前看到的Lua關鍵字一覽中包含andnotor等等。是的,與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?...一件簡單的事情好像給搞的很複雜??

算了,應該都懂,要不記住幾件事情就好:

小節

  • 只有nilfalse為假值,其餘為真。
  • niltypenil

某語言null的型別為object?
Opps! 沒引戰意思,當初語言設計的初衷本就有些不同。


而外分享:Lua在很多方面与javascript类似,甚至LuaJit存在效率优势,但是为何Lua框架流行度远低于node.js?

※ Note: 這張圖數據有點舊,參考就好。


上一篇
【30天Lua重拾筆記09】基礎1: 類型-函數
下一篇
【30天Lua重拾筆記11】基礎1: 註釋
系列文
30天 Lua重拾筆記36
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言