Testen op lege of nul-waarde string

Ik probeer een variabele voorwaardelijk in Ruby in te stellen. Ik moet het instellen als de variabele nul of leeg is (0 string lengte). Ik heb het volgende bedacht:

variable = id if variable.nil? || (!variable.nil? && variable.empty?)

Hoewel het werkt, lijkt het me niet erg Ruby-achtig. Is dit een beknoptere manier om het bovenstaande uit te drukken?


Antwoord 1, autoriteit 100%

De tweede clausule heeft geen controle !variable.nil?nodig. Als de evaluatie dat punt bereikt, is variable.nilgegarandeerd onwaar (vanwege kortsluiting).

Dit zou voldoende moeten zijn:

variable = id if variable.nil? || variable.empty?

Als je met Ruby on Rails werkt, Object.blank?lost dit exacte probleem op:

Een object is leeg als het onwaar, leeg of een witruimtetekenreeks is. Bijvoorbeeld "", " ", nil, []en {}zijn allemaal leeg.


Antwoord 2, autoriteit 30%

Als je in Rails zit, zou .blank?de methode moeten zijn die je zoekt:

a = nil
b = []
c = ""
a.blank? #=> true
b.blank? #=> true
c.blank? #=> true
d = "1"
e = ["1"]
d.blank? #=> false
e.blank? #=> false

Dus het antwoord zou zijn:

variable = id if variable.blank?

Antwoord 3, autoriteit 15%

variable = id if variable.to_s.empty?

Other episodes