libro
www.tuyano.com
初心者のためのRubyプログラミング入門

テキスト(Stringクラス)の基本操作 (3/4)

作成:2012-09-08 17:23
更新:2012-09-08 17:23

■破壊的メソッドについて

Stringのメソッドを扱うとき、頭に入れておきたいことは、「用意されているメソッドには、破壊的メソッドと非破壊的メソッドがある」という点でしょう。

破壊的メソッドとは、そのオブジェクト自身を改変するものです。Stringに用意されている通常のメソッド(非破壊メソッド)は、自身のテキストを変更した新しいテキストを生成して返しますが、破壊的メソッドは自分自身を書き換えてしまいます。

破壊的メソッドは、非破壊メソッドの名前の最後に「!」をつけた形で用意されています。以下に主なものを整理しておきましょう。

非破壊メソッド
strip delete downcase upcase encode reverse

破壊的メソッド
strip! delete! downcase! upcase! encode! reverse!
中には、破壊的メソッドが用意されていないものもあります。例えばinsertは、なぜかinsert!はありません。またsizeのようにテキストの情報を取得するためのものはそもそもテキストを書き換えるわけではないので破壊的メソッドは不要でしょう。

破壊的メソッドを使うと、自分自身を書き換えてしまうため、予想外の挙動を引き起こすことがあります。通常、特別な理由がない限りは、破壊的メソッドは使うべきではないでしょう。

下に、非破壊メソッドと破壊的メソッドの両方を同じように使った例を挙げておきます。非破壊的メソッドは元のテキストがそのまま温存されますが、破壊的メソッドではメソッドを呼び出すごとに元のテキスト自体が書き換えられるため、予想外の結果になります。

※プログラムリストが表示されない場合

AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。

●プログラム・リスト●

str = "Welcome to Ruby!"
puts("reverse: " + str.reverse)
puts("upcase: " + str.upcase)

str2 = "Welcome to Ruby!"
puts("reverse: " + str2.reverse!)
puts("upcase: " + str2.upcase!)

※関連コンテンツ

「初心者のためのRubyプログラミング入門」に戻る