Lebih
Penjelasan ringkas dari nihil v. kosong v. kosong di Ruby on Rails
Saya menemukan diri saya berulang kali mencari definisi yang jelas tentang perbedaan dari nihil?
, kosong?
, dan kosong?
di Ruby on Rails. Berikut ini's terdekat saya've datang:
-
kosong?
benda-benda palsu, kosong, atau spasi string. Misalnya,","
,", "
,nihil
,[]
, dan{}
yang kosong. -
nihil?
benda adalah contoh dari NilClass. -
kosong?
benda-kelas tertentu, dan definisi yang bervariasi dari kelas ke kelas. String kosong jika tidak memiliki karakter, dan sebuah array kosong jika tidak berisi barang-barang.
Apakah ada sesuatu yang hilang, atau yang lebih ketat dibandingkan yang dapat dibuat?
1093
14
.nihil?
dapat digunakan pada setiap objek dan benar jika objek adalah nihil..kosong?
dapat digunakan pada string, array dan hash dan mengembalikan true jika:Berjalan
.kosong?
pada sesuatu yang nihil akan membuangNoMethodError
.Itu adalah di mana
.kosong?
datang. Itu adalah yang dilaksanakan oleh Rel dan akan beroperasi pada setiap objek serta bekerja sama.kosong?
pada string, array dan hash..kosong?
juga mengevaluasi benar pada string yang non-kosong tapi hanya berisi spasi:Rel juga menyediakan
.hadir?
, yang mengembalikan negasi.kosong?
.Array gotcha:
kosong?
akan menghasilkanfalse
bahkan jika semua unsur-unsur ** array yang kosong. Untuk menentukan kekosongan dalam kasus ini, gunakansemua?
dengankosong?
, misalnya:Saya membuat ini berguna meja dengan semua kasus-kasus:
kosong?
,sekarang?
yang disediakan oleh Rel.Hanya memperpanjang Julian's tabel:
Ref: kosong?kosong?nihil?傻傻分不清楚
Tip cepat:
!obj.kosong? == obj.hadir?
Dapat berguna/mudah pada mata dalam beberapa ekspresi
Salah satu perbedaan adalah bahwa
.nihil?
dan.kosong?
adalah metode yang disediakan oleh bahasa pemrograman Ruby, sedangkan.kosong?
adalah sesuatu yang ditambahkan oleh web development framework Rails.nihil?
adalahkosong?
kosong?
adalahkosong?
kosong?
adalahnihil?
nihil?
adalahkosong?
tl;dr -- hanya menggunakan
kosong?
&hadir?
kecuali jika anda ingin membedakan antara","
dan", "
Kasus khusus adalah ketika mencoba untuk menilai apakah suatu nilai boolean adalah nihil:
Dalam hal ini rekomendasi akan menggunakan
.nihil?
Hanya sebuah catatan kecil tentang
apa?
rekomendasi: Ia's benar bahwa itu's umumnya setara dengan!kosong?
. Namun,apa?
akan kembalibenar
untuk string hanya spasi (ala", "
).Dan tentu saja, melihat 1.9 komentar di atas, juga.
Don't lupa
apa?
yang umumnya!kosong?
. Dalam Rails saya biasanya memeriksa keberadaan sesuatu di akhir pernyataan denganjika sesuatu
ataukecuali sesuatu
kemudian menggunakankosong?
di mana diperlukan karena tampaknya untuk bekerja di mana-mana.nihil?
adalah standar Ruby metode yang dapat disebut pada semua benda dan mengembalikantrue
jika objeknihil
:kosong?
adalah standar Ruby metode yang dapat disebut pada beberapa benda seperti String, Array dan Hash dan mengembalikantrue
jika benda tersebut tidak mengandung unsur:kosong?
tidak disebut dinihil
benda-benda.kosong?
adalah Rel metode yang dapat disebut padanihil
benda-benda serta benda kosong.Orang lain telah menjelaskan dengan baik apa perbedaan.
Saya ingin menambahkan di Ruby On Rails, lebih baik menggunakan
obj.kosong?
atauobj.hadir?
bukanobj.nihil?
atauobj.kosong?
.obj.kosong?
menangani semua jenisnihil
,''
,[]
,{}
, dan mengembalikantrue
jika nilai-nilai yang tidak tersedia dan kembalipalsu
jika nilai-nilai yang tersedia pada setiap jenis objek.ada?
metode yang dapat digunakan untuk memeriksa apakah data yang ada di database atau tidak. Ia mengembalikan nilai boolean yang baiktrue
ataufalse
.Rel 4
alternatif untuk @corban-brook 's 'Array gotcha: kosong?' untuk memeriksa apakah suatu array hanya memegang nilai-nilai kosong dan dapat dianggap sebagai kosong? benar:
satu juga bisa dilakukan:
nihil?
dapat digunakan pada setiap objek. Hal ini menentukan jika objek memiliki nilai apapun atau tidak, termasuk 'kosong' nilai-nilai.Misalnya:
Pada dasarnya
nihil?
hanya akan mengembalikan true jika objek ini sebenarnya sama dengan 'nil'.kosong?
hanya disebut pada benda-benda yang dianggap sebagai koleksi. Ini termasuk hal-hal seperti string (kumpulan karakter), hash (satu koleksi dari pasangan kunci/nilai) dan array (kumpulan dari objek sewenang-wenang).kosong?
kembali benar adalah tidak ada item dalam koleksi.Misalnya:
Perhatikan bahwa
kosong?
dapat't akan dipanggil nil benda-benda sebagai nihil benda-benda yang tidak koleksi dan itu akan menaikkan pengecualian.Juga perhatikan bahwa bahkan jika item dalam koleksi yang kosong, itu tidak berarti kumpulan kosong.
kosong?
pada dasarnya adalah kombinasi darinihil?
dankosong?
It's berguna untuk memeriksa benda-benda yang anda anggap adalah koleksi, tapi juga bisa menjadi nihil.