Ruby - 基本的な文法 - 代入とクローン


 クラウディア


1. 概要
2. 代入
3. クローン clone

1. 概要

 C言語やそれに類する言語をやってきて C# で一番びっくりするのが代入とクローンの問題です。

2. 代入


#!/usr/bin/env ruby

hash1 = Hash[ :foo => 'ふ~', :hoge => 'ふが' ]

hash2 = hash1
hash2[:hoge] = 'ほげ~'

puts("hash1 = #{hash1}")
puts("hash2 = #{hash2}")
 を実行すると以下のようになります。

hash1 = {:foo=>"ふ~", :hoge=>"ほげ~"}
hash2 = {:foo=>"ふ~", :hoge=>"ほげ~"}
 まさに「ほげ~」ってなっちゃうわけです。  古い言語をやっている者にとっては、代入でまるまる実態がコピーされているとは思わないので・・・。

3. クローン clone

 実態を別物として、中身をまるまるコピーするには clone メソッドを使用します。

#!/usr/bin/env ruby

hash1 = Hash[ :foo => 'ふ~', :hoge => 'ふが' ]

hash2 = hash1.clone
hash2[:hoge] = 'ほげ~'

puts("hash1 = #{hash1}")
puts("hash2 = #{hash2}")
 を実行すると以下のようになります。

hash1 = {:foo=>"ふ~", :hoge=>"ふが"}
hash2 = {:foo=>"ふ~", :hoge=>"ほげ~"}

audiobook.jp
AbemaTV 無料体験
U-NEXT
薬屋の独り言
5G CONNECT
【usus ウズウズ】
JETBOY
ハイスピードプラン
EMEET 1
earthcar(アースカー)
ベルリッツ
EaseUS
ネットオークションの相場、統計、価格比較といえばオークファン
TikTok Shop 【リピート用プログラム】
アフィリエイトのアクセストレード
Amazonギフトカード
サウンドハウス
損保との違い
葬送のフリーレン Prime Video
健康サポート特集
それがだいじWi-Fi