Mi trovo spesso a scrivere codice Ruby dove controllo la presenza di un valore e successivamente faccio qualcosa con quel valore se è presente. Per esempio.Fai qualcosa se il valore è presente
if some_object.some_attribute.present?
call_something(some_object.some_attribute)
end
Penso che sarebbe bello, se potesse essere scritto come
some_object.some_attribute.presence { |val| call_something(val) }
=> the return value of call_something
Qualcuno sa se c'è una tale funzione in Ruby o se ActiveSupport?
Ho aperto un pull request per questa funzione.
Se siete solo in cerca di una battuta, si potrebbe usare un inline if statement: 'call_something (some_object.some_attribute) if some_object.some_attribute.present?' – Sculper
Questo richiama 'some_attribute' due volte, cosa non desiderabile per verbosità e motivi di prestazione (se' some_attribute' ha invocato IO) –
'attr = if some_object. some_attribute.present? call_something (attr) end' questo chiamerà attributo solo una volta –