MacでRuby入門 ~文字列の連結と追加~

文字列の連結と追加の違いについて勉強しましょう。

文字列を連結するときには、「+メソッド」を使います。

では、実践してみます。

puts "Hello " + "World"

実行結果は

Hello World

になります。

続いて、変数に代入して文字列を表示してみます。

h = "Hello "
w = "World"
puts h + w
puts h
puts w

実行結果は

Hello World
Hello
World

になります。

「+メソッド」で文字列を連結したときは、どちらかの文字列が連結した文字列に変わるのではなく、連結のたびに新しい文字列が作成されます。

一方、文字列を追加するときは、「concatメソッド」もしくは「<<メソッド」を使います。

実践してみます。

puts "Hello ".concat("World")
puts "こん" << "にちは"

実行結果は

Hello World
こんにちは

ふむ。「+メソッド」と見た目同じに見えます。

では、変数に代入して文字列を表示してみます。

h = "Hello "
w = "World"
puts h << w
puts h
puts w

実行結果は、

Hello World
Hello World
World

あれ、変数hの中身が変わりましたね。

「+メソッド」は元の変数の中身を変更せずに、連結のたびに新しい文字列を作成する 「<< メソッド」は、連結元の文字列が変更されます

要するに、連結(+メソッド)と追加(concatメソッドもしくは<<メソッド)の違いは、元の文字列が変更されるかそうでないかの違いです。