R 筆記 - empty? blank? present?

R 筆記 - nil? empty? blank? present?

今天原本在 render 一個 dialog 的邏輯判斷想到用 nil 或者是 [] 來判斷,但寫到一半攝影大哥就寫完了,結果 review 的時候看到寫 present? 方法,所以又有這篇的由來…(其實就是一堆很像的方法,寫完讓自己記住而已qq

然後又默默地在辦公室聽到攝影大哥跟組員說:你為什麼這邊不寫 try ?? 就讓我又想到上一篇(好加在我是這樣寫…

nil?

判斷:

1
2
3
4
5
6
[].nil?        #=> #false
{}.nil? #=> #false
"".nil? #=> #false
" ".nil? #=> #false
"abc".nil? #=> #false
123.nil? #=> #false

轉換:

1
2
3
4
5
6
nil.nil?       #=> true
nil.to_a? #=> []
nil.to_c? #=> (0+0i)
nil.to_f? #=> 0.0
nil.to_i #=> 0
nil.to_s #=> ""

empty?

1
2
3
4
5
6
7
nil.empty?     #=> NoMethodError: undefined method `empty?' for nil:NilClass
[].empty? #=> true
{}.empty? #=> true
"".empty? #=> true
" ".empty? #=> false
"abc".empty? #=> false
123.empty? #=> NoMethodError: undefined method `empty?' for 123:Fixnum

以下方法只有 Rails 有!!!

blank?

1
2
3
4
5
6
7
nil.blank?     #=> true
[].blank? #=> true
{}.blank? #=> true
"".blank? #=> true
" ".blank? #=> true
"abc".blank? #=> false
123.blank? #=> false

present?

1
2
3
4
5
6
7
nil.present?   #=> false
[].present? #=> false
{}.present? #=> false
"".present? #=> false
" ".present? #=> false
"abc".present? #=> true
123.present? #=> true

可以注意到都有些些微差距~又可以發現只有 blank? / present? 不會噴錯(難怪常用XDD