質問編集履歴
2
タイトル修正 同時→同士
title
CHANGED
@@ -1,1 +1,1 @@
|
|
1
|
-
変数同
|
1
|
+
変数同士が連動して変更されてしまう条件?
|
body
CHANGED
File without changes
|
1
理解
title
CHANGED
File without changes
|
body
CHANGED
@@ -21,4 +21,25 @@
|
|
21
21
|
これと勘違いしているんじゃないか?等、何かありましたら教えてください。
|
22
22
|
|
23
23
|
ただの勘違いだったらすみません。
|
24
|
-
よろしくお願い致します。
|
24
|
+
よろしくお願い致します。
|
25
|
+
|
26
|
+
■■6/22 15:10追記■■
|
27
|
+
破壊的メソッドはオブジェクト自身を変更するメソッドで
|
28
|
+
破壊的でないメソッドは結果のみを返し、代入(=)がある場合は**その結果(返り値)のオブジェクトを新規作成し**(?)、再代入する。
|
29
|
+
|
30
|
+
配列ではなく、単純な値(c = 1のような)の場合、
|
31
|
+
内部では、1が入っているオブジェクトを作成し、cはそこを参照しているだけ。(Cに1が入っているわけではない)
|
32
|
+
何かしらの方法でオブジェクトそのものの値を変更すれば、『puts c』の結果も変わる。
|
33
|
+
d = c とすればcとdは同じ所を参照する事になるが、
|
34
|
+
『c = c * 3』のような計算式(この場合『*』?)は、**破壊的メソッドではない**ため、
|
35
|
+
結果である『3』を返し、新規オブジェクト『3』を作成し、cはそこのアドレスを参照しにいく。
|
36
|
+
それはdの参照とは関係がないため、dは『1』が入っているオブジェクトを参照したままで『puts d』は『1』のままである。
|
37
|
+
**単純な値の場合、破壊的メソッドがないため(?自信ない。。)**変数そのものに値が入っているように見えてしまう。
|
38
|
+
|
39
|
+
こんな感じでしょうか?
|
40
|
+
なんとなくは分かったのですが、
|
41
|
+
・=がある場合、新規オブジェクトを勝手に作っている?
|
42
|
+
・計算式は破壊的メソッドになる事はない?
|
43
|
+
・単純な値の場合、実質見た目が連動する事はない?
|
44
|
+
細かい所が詰め切れません。
|
45
|
+
以上3点が知りたいです。また明後日な事を言っていたら突っ込み頂けると助かります。
|