空の可能性のある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'
「Steve」と「slow」の間にはスペースが1つしかありません。
どうすればよいですか(できれば1行で)?
[name, quest, favorite_color, speed].reject(&:empty?).join(' ')
[name,quest,favorite_color,speed].join(' ').squeeze(' ')
を試してください
注入を使用できます:
[name,quest,favorite_color,speed].inject("") {|k,v| v.empty? ? k : k << " " << v }.strip