Effective_Rubyによれば…
「Rubyは型判断システムの関係でnilが入り込むのだから、最初っから対策をねじ込んでおけ(意訳)」との事。
実際のところ
nilが含まれている配列を"-"で繋げて一つの文にする事を考えます。
["Shuzo", nil, "Kino", nil].join('-') "Shuzo--Kino-"
まぁ、nilは空文字と認識されるため、意図した結果になりません。
こういった場合、nilを削除するArray#compactを使えば
["Shuzo", nil, "Kino", nil].compact.join('-') "Shuzo-Kino"
と、ちゃんと意図した結果になります。
ところで…ここに空の文字列が入っているとさらに厄介です。
["Shuzo", nil, "Kino", ""].compact.join('-') "Shuzo-Kino-"
こういうときには、Active_supportのObject#blank?が効きます。
["Shuzo", nil, "Kino", ""].delete_if(&:blank?).join("-") "Shuzo-Kino"
やったぜ