回答編集履歴
1
修正
answer
CHANGED
@@ -7,8 +7,10 @@
|
|
7
7
|
|
8
8
|
`c.object_id` と `(c * 3).object_id` を比較してもらうとわかると思いますが、この2つは別のオブジェクトですので、`Integer#*`は破壊的変更を行うメソッドではないです。そこの理解は良いとして、順序としては「新規オブジェクト『3』を作成し、戻り値『3』を返している」となります。(厳密には数値のオブジェクトは値によって固定なので新規という表現はあまり適していないかもしれません。)
|
9
9
|
|
10
|
-
変数の内部で何かが起きているという風に考えてらっしゃるのかもしれませんが、変数は箱であってそこにオブジェクトを入れているだけです。
|
10
|
+
変数の内部で何かが起きているという風に考えてらっしゃるのかもしれませんが、変数は箱であってそこにオブジェクトを入れているだけです。オブジェクトにただ名前をつけているだけと言った方がわかりやすいかもしれません。
|
11
11
|
|
12
|
+
もしかしたら数値を「単純な値」としているのに「オブジェクト」の話が出てきてしまっているところが問題の原因なのかもしれません。Rubyの場合、数値であってもオブジェクトですので、例えばRubyで`3`と書けば`3`になるんですが、厳密には`Integer(3)`が`3`にあたります。
|
13
|
+
|
12
14
|
そのメソッドが破壊的な変更をするかどうかは `freeze` を使って確認してみると良いです。
|
13
15
|
|
14
16
|
```rb
|