Viac na
Stručné vysvetlenie nil v. empty v. blank v Ruby on Rails
Opakovane sa stretávam s tým, že hľadám jasnú definíciu rozdielov medzi pojmami nil?
, blank?
a empty?
v Ruby on Rails. Tu je najbližšie k tomu, čo som našiel:
-
Objekty
blank?
sú false, prázdne alebo reťazec bielych znakov. Napríklad""
," "
,nil
,[]
a{}
sú prázdne. -
Objekty
nil?
sú inštancie triedy NilClass. -
Objekty
empty?
sú špecifické pre jednotlivé triedy a ich definícia sa líši od triedy k triede. Reťazec je prázdny, ak neobsahuje žiadne znaky, a pole je prázdne, ak neobsahuje žiadne položky.
Chýba tu niečo, alebo je možné urobiť presnejšie porovnanie?
1093
3
.nil?
možno použiť na ľubovoľný objekt a je true, ak je objekt nil..empty?
možno použiť na reťazce, polia a hashe a vráti true, ak:Spustenie príkazu
.empty?
na niečo, čo je nil, vyhodí chybuNoMethodError
.Tu prichádza na rad
.empty?
. Je implementovaný v systéme Rails a bude fungovať na ľubovoľnom objekte, ako aj pracovať ako.empty?
na reťazcoch, poliach a hash..blank?
vyhodnocuje true aj na reťazcoch, ktoré nie sú prázdne, ale obsahujú iba biele znaky:Rails tiež poskytuje
.present?
, ktorý vracia negáciu.blank?
.Zádrheľ v poli:
blank?
vrátifalse
, aj keď sú všetky elementy poľa prázdne. Ak chcete v tomto prípade určiť prázdnotu, použite napríkladall?
sblank?
:Jedným z rozdielov je, že
.nil?
a.empty?
sú metódy, ktoré poskytuje programovací jazyk Ruby, zatiaľ čo.blank?
je niečo pridané, čo poskytuje webový vývojový framework Rails.Nezabudnite na
any?
, čo je všeobecne!empty?
. V Rails zvyčajne kontrolujem prítomnosť niečoho na konci príkazu pomocouif something
alebounless something
a potom používamblank?
, kde je to potrebné, pretože sa zdá, že to funguje všade.