Perbedaan Method Ruby nil? dan empty?, serta blank? pada Rails
• Kunto Aji - Last modified atBawaan Ruby memiliki method nil?
dan empty?
, sedangkan pada Ruby on Rails ada blank?
. Berikut penjelasannya masing-masing.
Method nil?
Method nil?
digunakan untuk mengecek apakah suatu objek bernilai nil
atau merupakan instance dari NilClass
.
nil.nil? #=> true
false.nil? #=> false
true.nil? #=> false
[].nil? #=> false
"".nil? #=> false
0.nil? #=> false
my_arr = Array.new #=> []
my_arr.nil? #=> false
s = String.new #=> ""
s.nil? #=> false
my_var.nil? #=> NameError: undefined local variable or method `my_var' for main:Object
my_var = nil #=> nil
my_var.nil? #=> true
Method empty?
Method empty?
adalah method yang dimiliki hanya oleh objek-objek tertentu sehingga tidak semua objek memiliki method ini.
Sebagai contoh, array kosong dan string kosong. Array kosong bukan nil
karena merupakan objek atau instance dari kelas Array
yang tidak memiliki elemen. Sedangkan string kosong juga bukan nil
karena merupakan objek atau instance dari kelas String
yang memiliki nol bytes didalamnya.
nil.empty? #=> NoMethodError: undefined method `empty?' for nil:NilClass
false.empty? #=> NoMethodError: undefined method `empty?' for false:FalseClass
true.empty? #=> NoMethodError: undefined method `empty?' for true:TrueClass
[].empty? #=> true
"".empty? #=> true
0.empty? #=> NoMethodError: undefined method `empty?' for 0:Fixnum
my_arr = Array.new #=> []
my_arr.empty? #=> true
s = String.new #=> ""
s.empty? #=> true
my_var.empty? #=> NameError: undefined local variable or method `my_var' for main:Object
my_var = [] #=> []
my_var.empty? #=> true
Method blank?
Method blank? bukan merupakan method dari Ruby, melainkan method pada framework Ruby on Rails.
Sebuah objek dianggap blank jika false, kosong atau berisi sebuah karakter spasi. Contoh, ""
, " "
, nil
, []
, dan {}
adalah blank karena kosong. Salah satu tujuannya adalah menyederhanakan pengecekan apakah suatu objek nil dan empty dibawah ini.
# Pada Ruby
if my_var.nil? && my_var.empty?
# Pada framework Ruby on Rails yang terdapat blank?
if my_var.blank?