teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

2

タイトル修正 同時→同士

2020/06/22 07:47

投稿

torisan3
torisan3

スコア50

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

1

理解

2020/06/22 07:47

投稿

torisan3
torisan3

スコア50

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点が知りたいです。また明後日な事を言っていたら突っ込み頂けると助かります。