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.nil
gegarandeerd 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?