String.new() Stringオブジェクトを複製します
String.new([string])
Stringオブジェクト[string]を複製します。
戻り値
複製されたStringオブジェクト
『 = (イコール)』でオブジェクトをコピーした場合には、共通のインスタンスを参照するため、片方の値を変更した場合には、もう片方の値も変更されます。
s = "hoge" s2 = s s2 << 'test' p s 出力 hogetest
String.newを使用した場合には、オブジェクト自体を複製するため、値の変更による影響はありません。
s = "hoge" s2 = String.new(s) s2 << 'test' p s 出力 hoge
オブジェクトの内容のみ複製するメソッドdupと等価です。
freeze、taint、特異メソッドなどの情報も含めた完全な複製を作成するにはメソッドcloneを使用します。
String.newやdupで複製されたオブジェクトはequal?メソッドで比較したときfalseを返します。
これはequal?メソッドが「オブジェクトの内容が等しいかどうか」ではなく「オブジェクトの実態が同じかどうか」を判断するものだからです。
obj.equal?(obj.clone) 出力 false
obj == obj.clone 出力 true
s1 = s s.equal?(s1) 出力 true
関連記事
- =~ 正規表現のマッチする
- concat 文字列を結合する
- <= 文字列を比較する
- < 文字列を比較する
- >= 文字列を比較する
- > 文字列を比較する
- == 文字列を比較する
- % 文字列のフォーマットをする
- * 文字列を繰り返し結合する
- + 文字列を連結する
スポンサーリンク