Daaarin
Daaarin

Reputation: 13

Have anyone found beautiful way to replace "smth if smth.present?"?

Often I'm facing lines like

result = 'Some text'
result += some_text_variable if some_text_variable.present?

And every time I want to replace that with something more accurate but I don't know how

Any ideas plz?

Upvotes: 0

Views: 79

Answers (2)

ferrisoxide
ferrisoxide

Reputation: 167

You could "compact" and join an array, e.g.

['Some text', some_text_variable].select(&:present?).join

I realise this is a longhand form, just offering as an alternative to mutating strings.

This can look a bit nicer, if you have a large number of variables to munge together, or you want to join them in some other way e.g.

[
  var_1, 
  var_2,
  var_3,
  var_4
].select(&:present?).join("\n")

Again, nothing gets mutated - which may or may not suit your coding style.

Upvotes: 0

mechnicov
mechnicov

Reputation: 15298

result += some_text_variable.to_s

It will work if some_text_variable is nil or empty string for example

But it always will concat empty string to original string

You can also use

result += some_text_variable.presence.to_s

It will work for all presence cases (for example for " " string)

Upvotes: 1

Related Questions