Saya menemukan diri saya berulang kali mencari definisi yang jelas tentang perbedaan nil?
, blank?
dan empty?
di Ruby on Rails. Inilah yang paling dekat dengan saya:
blank?
objek adalah string palsu, kosong, atau spasi. Sebagai contoh,""
," "
,nil
,[]
, dan{}
kosong.nil?
objek adalah instance dari NilClass.empty?
objek adalah kelas-spesifik, dan definisi bervariasi dari kelas ke kelas. String kosong jika tidak memiliki karakter, dan array kosong jika tidak mengandung item.
Apakah ada yang hilang, atau perbandingan yang lebih ketat yang bisa dibuat?
:nil?
didefinisikan pada ::Kernel
dan diganti pada ::NilClass
, sementara :empty?
diimplementasikan secara terpisah di banyak kelas (native pada ::String
, ::Array
, ::Hash
, dan non-native di kelas-kelas lain seperti ::Set
dari stdlib dan ::ActiveRecord::Relation
dari rel). Jadi :nil?
tersedia di semua subclass ::Object
dan juga di setiap kelas yang termasuk ::Kernel
dengan sendirinya, di mana :empty?
harus diterapkan atau dimasukkan secara khusus di kelas Anda.
nil
konsep, mulailah dari sini .
[1] pry(main)> [].blank? => true
present?
. Yang karenablank?
mengembalikan true untuk array kosong.