文字列応用レベル

次のプログラムを実行すると何が表示されますか?

a = "Ruby"
b = " on Rails"
a.concat b
a.reverse!
p a.index("R", 1)
  • 13
  • 24
  • 311
  • 4nil

解説

String#concat! が付いていませんが破壊的にレシーバを変更します。そのため a はまず "Ruby on Rails" になります。続く reverse! も破壊的に a"sliaR no ybuR" に変更します。index("R", 1) は index 1 以降で最初の "R" を探すため、index 4 を返します。! がないメソッドでも破壊的なものがある点に注意します。

問題一覧へ戻る