プログラミング初心者です。
今「プロを目指す人のためのRuby入門」という本で勉強をしています。
本ではirbでの実行結果が#=>の後のコードに記載されています。
以下が本に記載されていたコードです。
class Product SOME_ NAMES = ['Foo', 'Bar', 'Baz'] def self.names_without_foo( names = SOME_NAMES) # names が デフォルト 値 だ と、 以下 の コード は 定数 の SOME_NAMES を 破壊的 に 変更 し て いる こと に なる names.delete('Foo') names end end Product.names_without_foo #=> ["Bar", "Baz"] # 定数 の 中身 が 変わっ て しまっ た! Product::SOME_NAMES #=> ["Bar", "Baz"]
上記の「 names が デフォルト 値 だ と、 以下 の コード は 定数 の SOME_NAMES を 破壊的 に 変更 し て いる こと に なる 」という文章が理解できません。
何故delete!としていないのに定数の中身を破壊的に変更できるのでしょうか?
ちなみに、以下のコードを実行したところ、deleteでは定数を破壊的に変更できず、delete!では変更可能でした。#=>の後には実行結果を記載しています。
Ruby
1TEISUU = 'こんにちは' 2puts TEISUU #=> こんにちは 3puts TEISUU.delete('に') #=>こんちは 4puts TEISUU #=> こんにちは 5puts TEISUU.delete!('に') #=>こんちは 6puts TEISUU #=>こんちは 7
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/09/19 23:44