読者です 読者をやめる 読者になる 読者になる

条件演算子とchomp!に関するメモ

Rubyドキュメント Stringクラスより

chomp([rs])
chomp!([rs])

    文字列の末尾から rs で指定する行区切りを取り除きます。 rsのデフォルト値は変数$/の値です。

    rs に nil を指定した場合、このメソッドは何もしません。 
  rsが空文字列(パラグラフモード)の場合、末尾の連続する改行はすべて取り除かれます。

    chomp は改行を取り除いた文字列を生成して返します。 
  chomp! は self を変更して返しますが、取り除く改行がなかった場合は nil を返します。

テスト

$ ruby -v
ruby 1.8.5 (2006-08-25) [i386-linux]

$ ruby -e 's="s"; p s.chomp!?s:s'
-e:1: warning: parenthesize argument(s) for future version
-e:1: syntax error
s="s"; p s.chomp!?s:s
                    ^

$ ruby -e 's="s"; p (s.chop!)?s:s'
""

$ ruby -e 's="s"; p (s.chomp!)?s:s'
"s"

$ ruby -e 's="s\n"; p (s.chomp!)?s:s'
"s"

$ ruby -e 's="s\r\n"; p (s.chomp!)?s:s'
"s"

$ ruby -e 's="s"; p (s.chomp!(nil))'
nil

$ ruby -e 's="s"; p (s.chomp!(nil)); p s'
nil
"s"