質問編集履歴

2

タイトル修正 同時→同士

2020/06/22 07:47

投稿

torisan3
torisan3

スコア50

test CHANGED
@@ -1 +1 @@
1
- 変数同が連動して変更されてしまう条件?
1
+ 変数同が連動して変更されてしまう条件?
test CHANGED
File without changes

1

理解

2020/06/22 07:47

投稿

torisan3
torisan3

スコア50

test CHANGED
File without changes
test CHANGED
@@ -45,3 +45,45 @@
45
45
  ただの勘違いだったらすみません。
46
46
 
47
47
  よろしくお願い致します。
48
+
49
+
50
+
51
+ ■■6/22 15:10追記■■
52
+
53
+ 破壊的メソッドはオブジェクト自身を変更するメソッドで
54
+
55
+ 破壊的でないメソッドは結果のみを返し、代入(=)がある場合は**その結果(返り値)のオブジェクトを新規作成し**(?)、再代入する。
56
+
57
+
58
+
59
+ 配列ではなく、単純な値(c = 1のような)の場合、
60
+
61
+ 内部では、1が入っているオブジェクトを作成し、cはそこを参照しているだけ。(Cに1が入っているわけではない)
62
+
63
+ 何かしらの方法でオブジェクトそのものの値を変更すれば、『puts c』の結果も変わる。
64
+
65
+ d = c とすればcとdは同じ所を参照する事になるが、
66
+
67
+ 『c = c * 3』のような計算式(この場合『*』?)は、**破壊的メソッドではない**ため、
68
+
69
+ 結果である『3』を返し、新規オブジェクト『3』を作成し、cはそこのアドレスを参照しにいく。
70
+
71
+ それはdの参照とは関係がないため、dは『1』が入っているオブジェクトを参照したままで『puts d』は『1』のままである。
72
+
73
+ **単純な値の場合、破壊的メソッドがないため(?自信ない。。)**変数そのものに値が入っているように見えてしまう。
74
+
75
+
76
+
77
+ こんな感じでしょうか?
78
+
79
+ なんとなくは分かったのですが、
80
+
81
+ ・=がある場合、新規オブジェクトを勝手に作っている?
82
+
83
+ ・計算式は破壊的メソッドになる事はない?
84
+
85
+ ・単純な値の場合、実質見た目が連動する事はない?
86
+
87
+ 細かい所が詰め切れません。
88
+
89
+ 以上3点が知りたいです。また明後日な事を言っていたら突っ込み頂けると助かります。