回答編集履歴

5

誤字を修正

2017/01/06 07:19

投稿

grovion
grovion

スコア145

test CHANGED
@@ -1,6 +1,6 @@
1
1
  `operate`の処理を勘違いしているかもしれないので、
2
2
 
3
- `operate`の処理の理解をすすめるために、順を追って同等でより処理に`operate`を変換していきます。
3
+ `operate`の処理の理解をすすめるために、順を追って同等な処理より短い処理に`operate`を変換していきます。
4
4
 
5
5
 
6
6
 

4

回答した理由を追記しました

2017/01/06 07:19

投稿

grovion
grovion

スコア145

test CHANGED
@@ -1,3 +1,9 @@
1
+ `operate`の処理を勘違いしているかもしれないので、
2
+
3
+ `operate`の処理の理解をすすめるために、順を追って同等でより処理に`operate`を変換していきます。
4
+
5
+
6
+
1
7
 
2
8
 
3
9
  # operateの同等な変換 version1

3

補足説明を追加

2017/01/06 07:18

投稿

grovion
grovion

スコア145

test CHANGED
@@ -1,8 +1,20 @@
1
+
2
+
1
- 以下ように引数の名前を更しても全く同じ処理をしていることはわかる方ですか?
3
+ # operate同等な換 version1
2
4
 
3
5
 
4
6
 
7
+ 以下のように引数の名前を変更しても全く同じ処理をしていることはわかりますか?
8
+
9
+
10
+
11
+ 名前は同じでも、スコープが違えば別です。
12
+
13
+ operateの中で`obj1 = obj2`して、
14
+
5
- # operateの同等な変換 version1
15
+ operateの中のobj1の変数を変えても、
16
+
17
+ mainの中のobj1の参照先を変えることはしません。
6
18
 
7
19
 
8
20
 

2

追記

2017/01/06 07:13

投稿

grovion
grovion

スコア145

test CHANGED
@@ -91,3 +91,25 @@
91
91
 
92
92
 
93
93
  ```
94
+
95
+
96
+
97
+ operateの同等な変換の通り、operateは第一引数をそのまま返す関数になります。
98
+
99
+
100
+
101
+ つまり
102
+
103
+ `operate(obj1, obj2) == obj1`となります
104
+
105
+
106
+
107
+ つまり
108
+
109
+
110
+
111
+ `obj2 = operate(obj1, obj2)`
112
+
113
+ としたあとに
114
+
115
+ `println(obj1 == obj2)`すれば、trueになりますね

1

追記

2017/01/06 07:07

投稿

grovion
grovion

スコア145

test CHANGED
@@ -1,4 +1,8 @@
1
1
  以下のように引数の名前を変更しても全く同じ処理をしていることはわかる方ですか?
2
+
3
+
4
+
5
+ # operateの同等な変換 version1
2
6
 
3
7
 
4
8
 
@@ -19,3 +23,71 @@
19
23
  }
20
24
 
21
25
  ```
26
+
27
+
28
+
29
+ # operateの同等な変換 version2
30
+
31
+
32
+
33
+ またobj3を返すと言うことは、以下の処理でも全く同じ処理と言うことはわかりますか?
34
+
35
+
36
+
37
+
38
+
39
+
40
+
41
+ ```java
42
+
43
+ static Test operate(Test ooooo1, Test ooooo2){ //⑤
44
+
45
+ // 混乱を避けるため、ooooo1, ooooo2と引数の名前を変更しました
46
+
47
+
48
+
49
+ Test obj3 = ooooo1; //⑥変数obj3はobj1が参照しているオブジェクト(A)を見る
50
+
51
+
52
+
53
+ // 無意味
54
+
55
+ // ooooo1 = ooooo2; //⑦obj1はobj2が参照しているオブジェクト(B)を見る
56
+
57
+
58
+
59
+ return obj3; //⑧呼び出し元へobj3を返す
60
+
61
+ }
62
+
63
+
64
+
65
+ ```
66
+
67
+
68
+
69
+ # operateの同等な変換 version3
70
+
71
+
72
+
73
+ 結局`operate`は`oooo1`を返していうことはわかりますか?
74
+
75
+ つまり、`operate`はこれをしていることと同じということがわかりますか?
76
+
77
+
78
+
79
+
80
+
81
+ ```
82
+
83
+ static Test operate(Test ooooo1, Test ooooo2){ //⑤
84
+
85
+ // 混乱を避けるため、ooooo1, ooooo2と引数の名前を変更しました
86
+
87
+ return ooooo1;
88
+
89
+ }
90
+
91
+
92
+
93
+ ```