Nil v. Boş v. Ruby'də Rails üzərindəki boşluq

Mən daim nil? fərqlərin dəqiq tərifini axtarıram nil? , blank?empty? Ruby on Rails-da. İşdə ən yaxşısı gəldi:

  • blank? obyektlər yalan, boş və ya boşluqlardır. Məsələn, "" , " " , nil , []{} boşdur.

  • nil? obyektlər NilClass nümunələridir.

  • empty? obyektlər bir sinifə aiddir və təsvir sinifdən sinifə qədər dəyişir. Hər hansı bir simvol olmadığı halda simli boşdur və elementlər olmadıqda dizi boşdur.

Eksik və ya daha dəqiq bir müqayisə edilə bilən bir şey var mı?

876
20 мая '09 в 1:51 2009-05-20 01:51 Arrel 20 may 2013-cü il saat 01:51 'da təyin olunur
@ 13 cavab

.nil? hər hansı bir obyekt üçün istifadə edilə bilər və əgər obyekt sıfırdırsa.

.empty? strings, arrays və xassələri üçün istifadə edilə bilər və əgər doğru olarsa:

  • Çətin uzunluğu == 0
  • Array uzunluğu == 0
  • Haş Length == 0

.empty? Nil nədir, bir NoMethodError .

.blank? . Rails tərəfindən həyata keçirilir və hər hansı bir obyekt üzərində işləyəcək və həmçinin kimi işləyəcək .empty? strings, array və hashes haqqında.

 nil.blank? == true false.blank? == true [].blank? == true {}.blank? == true "".blank? == true 5.blank? == false 0.blank? == false 

.blank? boş olmayan strings üçün də doğru qiymətləndirir, ancaq boşluqları ehtiva edir:

 " ".blank? == true " ".empty? == false 

Rails də təqdim edir .present? .blank? .

Array getcha: blank? array bütün elementləri boş olsa belə, false qaytarır. Bu vəziyyətdə boşluğu müəyyən etmək üçün all? istifadə edin all? blank? məsələn:

 [ nil, '' ].blank? == false [ nil, '' ].all?  == true 
1188
20 мая '09 в 19:14 2009-05-20 19:14 Cavab Corban Brook tərəfindən verilir May 20 '09 19:14 2009-05-20 19:14

Bütün faydalı hallarda bu faydalı cədvəl hazırladım:

border=0

2019

544
18 дек. Julian Popov 18 dekabrda cavab verdi 2013-12-18 19:29 '13 da 7:29 2013-12-18 19:29

Yalnız Julian masasını sürükləyin:

2019

12 нояб. Cavab Sibevin Wang tərəfindən 12 noyabrda verilir. 2014-11-12 03:20 '14 da 3:20 2014-11-12 03:20

Sadə Məsləhət !obj.blank? == obj.present? !obj.blank? == obj.present?

Bəzi ifadələrdə gözlərdə daha rahat / asan ola bilər.

54
13 июля '10 в 14:33 2010-07-13 14:33 Cavab İyulun 13-də saat 14: 33-də Aleksandr Malfayt tərəfindən verilib 2010-07-13 14:33

Bir fərq bu .nil?.empty? Ruby proqramlaşdırma dili ilə təmin edilən üsullar budur .blank? - bu Rails inkişaf mühitindən istifadə edərək əlavə olunmuş bir şeydir.

43
20 мая '09 в 2:42 2009-05-20 02:42 Cavab 20 may 2013-cü il tarixində Andrey Grimm tərəfindən 2:42 2009-05-20 02:42 tarixində verilir

Hər any? bir qısa qeyd any? : O adətən bərabərdir ki, doğru !empty? . Ancaq any? string (ala " " ) içində yalnız yerini qaytarır.

Və, əlbəttə, 1.9-cu yuxarıdakı şərhə baxın.

8
13 июля '09 в 22:25 2009-07-13 22:25 cavab iyul ayının 13-də saat 10: 25-də Davamyron tərəfindən verilmişdir 2009-07-13 22:25

Xüsusi bir vəziyyət, boolean dəyərinin nil olmadığını qiymətləndirmək cəhdi:

 false.present? == false false.blank? == true false.nil? == false 

Bu halda istifadə etmək məsləhətdir .nil?

7
14 нояб. Cavab Alan H 14 noyabrda verilir. 2012-11-14 16:56 '12 at 4:56 pm 2012-11-14 16:56

any? şeyi unutma any? adətən !empty? . Rails'ta, bir if somethingunless something və sonra blank? istifadə ilə bir bəyanat sonunda bir şey varlığını yoxlamaq blank? lazım olduğu yerdə, hər yerdə olduğu kimi.

7
20 мая '09 в 2:51 2009-05-20 02:51 cavab 20 may 2013-cü ildə Andy tərəfindən 2:51 2009-05-20 02:51 tərəfindən verilir

nil? - bütün obyektlərə çağırılabilən və obyekt nil olduqda qaytarılacaq standart Ruby metodu:

 b = nil b.nil? # => true 

empty? - strings, arrays və xeylər kimi bəzi obyektlər üçün çağırılacaq standart Ruby metodu və bu obyektlərin bir elementi olmadığı təqdirdə true olur:

 a = [] a.empty? # => true b = ["2","4"] b.empty? # => false 

empty? nil obyektlərə çağırılmaq mümkün deyil.

blank? nil obyektlərindən və boş obyektlərdən də istifadə edilə bilən Rails üsuludur.

6
22 дек. cavab verildi neha 22 dec. 2014-12-22 08:41 '14 'də saat 8:41 ' də 2014-12-22 08:41

exists? Metod məlumat bazasında məlumatların yoxlanılmaması üçün istifadə oluna bilər. Boolean dəyərləri true və ya false qaytarır.

2
17 февр. Cavab 17 fevralda Kelvin tərəfindən verilir . 2016-02-17 14:25 '16 'da saat 14:25 ' da 2016-02-17 14:25

Bütün digərləri fərqləri nə yaxşı açıqladı.

Ruby on Rails əlavə etmək istəyirəm, obj.blank? istifadə etmək daha yaxşıdır obj.blank? və ya obj.present? obj.nil? əvəzinə obj.nil? və ya obj.empty? .

obj.blank? hər cür nil , '' , [] , {} '' nil işləyir və dəyərlər mövcud olmadıqda və hər hansı bir obyekt növü üçün dəyərlər mövcud olduqda false qaytarır.

1
20 мая '15 в 10:55 2015-05-20 10:55 Cavab Maniş Shrivastava tərəfindən verilir 20 may, '15 saat 10:55 'da 2015-05-20 10:55

Rails 4

alternativ @ corban-brook 'Array gotcha: boş?' dizilərin yalnız boş dəyərlərdən ibarət olub olmadığını yoxlamaq və boş hesab edilə bilərmi? sağ:

 [ nil, '' ].all?  == true 

də edə bilərsiniz:

 [nil, '', "", " ",' '].reject( == true 
1
19 авг. Cavab verilən mahatmaniç 19 av . 2015-08-19 16:52 '15 at 16:52 2015-08-19 16:52

nil? hər hansı bir obyektdə istifadə edilə bilər. Bir obyektin "boş" dəyərlər də daxil olmaqla hər hansı bir dəyərə malik olub olmadığını müəyyən edir.

Məsələn:

 example = nil example.nil? # true "".nil? # false 

Əsasən nil? obyektin həqiqətən "nil" olması halında yalnız həqiqətə dönəcəkdir.

empty? yalnız toplusu hesab edilən obyektlər üçün çağırılır. Bu, strings (xarakter dəstləri), xeylər (əsas / dəyər cütləri) və dizilər (özbaşına obyektlərin toplusu) kimi şeyləri ehtiva edir. empty? qayıtdıqda, heç bir maddə toplanmaz.

Məsələn:

 "".empty? # true "hi".empty? # false {}.empty? # true {"" => ""}.empty? # false [].empty? # true [nil].empty? # false nil.empty? # NoMethodError: undefined method `empty?' for nil:NilClass 

empty? olduğunu unutmayın empty? nil obyektlərə zəng etmək mümkün deyil, çünki nil obyektlər toplanmaz və bu istisnadır.

Həmçinin qeyd edək ki, kolleksiyada olan əşyalar boş olsa belə, bu kolleksiya boşdur.

blank? - əsasən nil? birləşməsidir nil?empty? . Koleksiyonları düşündüyünüz obyektləri yoxlamaq üçün də faydalıdır, ancaq nil ola bilər.

1
15 сент. Cavab verildi Chitra Sep 15 2015-09-15 15:06 '15 at 15:06 2015-09-15 15:06