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