iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 23
0
自我挑戰組

滿滿的紅寶石不拿嗎?-- 去吧!我把世界上的一切都放在那裡了! 系列 第 23

empty? nil? blank? <> 聽說今天是滿月?戰鬥力爆表的月亮獅子變身!- 滿滿的紅寶石不拿嗎?

  • 分享至 

  • xImage
  •  

[Day23] 加洛特的月亮獅子型態瞬間炸裂全場!

抱歉今天的圖和主題可能關聯性沒這麼強,但選在今天放這張真的再適合不過了!
先祝 IT邦的各位大大中秋節快樂!


這篇要來繼續弄懂一些自己不是很清楚的東西!
接著我們來比較三個很像的概念

  • empty?
  • nil?
  • blank?

empty?

翻譯:這個是空的嗎?(誰吃完了?)

empty? 是一個用來檢查集合裡是否為空的方法,這裡指的集合包括陣列、雜湊以及字串。

# 空的陣列
[].empty?    
=> true 

# 空的雜湊
{}.empty?    
=> true

# 空的字串
"".empty?
=> true 

# 有東西的字串
" ".empty?
=> false 

最後一個 " "empty? 方法檢查後得到 false,原因是字串內含有「空白」這個值,所以並不是真的為空。


nil?

翻譯:我說你,是不存在嗎?(推眼鏡)

一開始學的時候,會覺得 falsenil 很像,後來才發現意思其實差很多。因為 false 代表的是「錯誤」、「假的」,而 nil 則代表「空的」或「不存在」,在其他語言可能是用 null

先把 nil 印出來看看:

puts nil
=> nil

在 Ruby 裡,所有的物件都不是 nil,而只有 nilnil ,因此在 nil? 方法檢查下:

nil.nil?       #true
[].nil?        #false
{}.nil?        #false
"".nil?        #false
" ".nil?       #false
"abc".nil?     #false
123.nil?       #false

nil 一個跟大家不一樣,也太沒人緣了啊!

所以我說,nil 它存在嗎?

這個問法好像在討論哲學議題 :D

nil 在 Ruby 裡其實是真實存在的物件,它只是被用來表示「空的」、「不存在」的概念而已,可以用 nil? 方法來問它是不是 nil (有點詭異)

nil.nil?
=> true 

nil :我就沒存在感了,還特別問我在不在是怎麼樣?當我塑膠膩!

關於 nil 可以參考龍哥的大作 為你自己學 Ruby on Rails ,裡面有更詳細的說明!


blank?

翻譯:沒有帶奇怪的東西進來就行~(睜一隻眼閉一隻眼)

blank? 則是一個較為寬鬆的檢查方法,不管集合內是「真·空」,還是集合內有「空白」,甚至代表不存在的 nilblank? 都可以接受。

nil.blank?     #true
[].blank?      #true
{}.blank?      #true
"".blank?      #true
" ".blank?     #true
"abc".blank?   #false
123.blank?     #false

也就是說,前面 empty?nil? 的所要篩選的概念「空的」以及「不存在」,到了 blank? 這裏一律都會回傳 true

blank?:同意啦~哪次不同意~啊等等!有東西的話就真的不行~(追上)


簡單的比較就到這邊啦!是不是覺得似乎有那麼一點更了解了?(正能量上身)

在這邊敬祝大家中秋佳節愉快~


上一篇
attr_accessor <> 喲嚯嚯嚯~可以讓我看一下你的 code 嗎? - 滿滿的紅寶石不拿嗎?
下一篇
陣列方法 <> 學不會就無法走出這個錯綜複雜的迷宮!路痴索隆表示:- 滿滿的紅寶石不拿嗎?
系列文
滿滿的紅寶石不拿嗎?-- 去吧!我把世界上的一切都放在那裡了! 30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言