У меня есть 4 строковые переменные name, quest, favorite_color, speed
это могло бы быть пусто. Я хочу связать их всех вместе, помещая пробелы между теми, которые не пусты. Простота кода, т.е. как простой посмотреть на и понять, более важна, чем скорость.
Так:
name = 'Tim'
quest = 'destroy'
favorite_color = 'red'
speed = 'fast'
становится
'Tim destroy red fast'
и
name = 'Steve'
quest = ''
favorite_color = ''
speed = 'slow'
становится:
'Steve slow'
Примечание там является только 1 пространством между 'Steve' и 'медленный'.
Как я делаю это (предпочтительно в 1 строке)?
[name, quest, favorite_color, speed].reject(&:empty?).join(' ')
Попробуйте [имя, задание, любимый_цвет, скорость] .join ('') .squeeze ('')
Вы можете использовать инъекцию :
[name,quest,favorite_color,speed].inject("") {|k,v| v.empty? ? k : k << " " << v }.strip