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

回答編集履歴

9

文章の修正

2020/07/31 17:32

投稿

BluOxy
BluOxy

スコア2663

answer CHANGED
@@ -22,13 +22,13 @@
22
22
 
23
23
  その山田さんをコピーをしていては**姓名と年齢と遺伝子の1部がたまたま一致した別人の山田さん**を生成しているようで、違和感を感じます。生成された `me`、`me_1`、`me_2`は それぞれ **別人** だと思います。`cat`、`cat_1`についても同じです。
24
24
 
25
- `me`、`me_1`、`me_2` や `cat`、`cat_1` が同一の人物を指しているのであれば `Person`や`Pet`はミュータブルであるべきではないでしょうか。
25
+ `me`、`me_1`、`me_2` や `cat`、`cat_1` が同一の人物を指しているのであれば `Person`や`Pet`はミュータブルである方が都合が良いのではないでしょうか。
26
26
 
27
27
  ---
28
28
  現実世界のオブジェクトでたとえ話をするのは混乱を招くような気がしますが…、イミュータブルであるべきオブジェクトの例を1つ挙げるなら **硬貨** でしょうか。
29
29
 
30
30
  硬貨の金銭的価値(フィールドの値)は最初(インスタンス生成時)に決めると思いますが、途中でその価値が変化すると困る場合があります。いえ、おそらく困ります。
31
31
 
32
- 明日から我々が使っている100円玉の価値が50円になったら困りますよね。硬貨に 100 と書いてあるはずなのに金銭的価値は 50 円です。私なら困ります。半額で自動販売機でジュースが買えたり、アーケードゲームが遊べて一部の人たちはラッキーかもしれませんが、それ商売している側の人たちは確実にりますね。
32
+ 明日から我々が使っている100円玉の価値が50円になったら困りますよね。硬貨に 100 と書いてあるはずなのに金銭的価値は 50 円です。私なら困ります。半額で自動販売機でジュースが買えたり、アーケードゲームが遊べて一部の人たちはラッキーかもしれませんが、それ等で商売している人たちはきっとるでしょうね。
33
33
 
34
- cn202kさんも困ると感じたなら、それはイミュータブルであるべき
34
+ ですから、硬貨をオブジェクトとして表現する際はイミュータブルである方が都合が良いしょう

8

文章の修正

2020/07/31 17:32

投稿

BluOxy
BluOxy

スコア2663

answer CHANGED
@@ -22,7 +22,7 @@
22
22
 
23
23
  その山田さんをコピーをしていては**姓名と年齢と遺伝子の1部がたまたま一致した別人の山田さん**を生成しているようで、違和感を感じます。生成された `me`、`me_1`、`me_2`は それぞれ **別人** だと思います。`cat`、`cat_1`についても同じです。
24
24
 
25
- `me`、`me_1`、`me_2` が同一の人物を指しているのであれば `Person`や`Pet`はミュータブルであるべきではないでしょうか。
25
+ `me`、`me_1`、`me_2` や `cat`、`cat_1` が同一の人物を指しているのであれば `Person`や`Pet`はミュータブルであるべきではないでしょうか。
26
26
 
27
27
  ---
28
28
  現実世界のオブジェクトでたとえ話をするのは混乱を招くような気がしますが…、イミュータブルであるべきオブジェクトの例を1つ挙げるなら **硬貨** でしょうか。

7

文章の修正

2020/07/31 17:29

投稿

BluOxy
BluOxy

スコア2663

answer CHANGED
@@ -11,7 +11,7 @@
11
11
 
12
12
  > イミュータブルなオブジェクト同士が相互参照している場合はどのように対処すれば良いのか?
13
13
 
14
- ついてはイミュータブルにすることをやめて、 `me.age = 40;` で良いでしょう
14
+ 対する回答イミュータブルにすることをやめて、 `me.age = 40;`と書く」
15
15
 
16
16
  > me.copyWith(pets: me.pets + cat);
17
17
  > me_1.copyWith(age: 40);

6

文章の修正

2020/07/31 17:22

投稿

BluOxy
BluOxy

スコア2663

answer CHANGED
@@ -20,7 +20,7 @@
20
20
 
21
21
  今回のケースでは、姓名が変わろうが歳を取ろうがその山田さんは同一人物でしょう。
22
22
 
23
- その山田さんをコピーをしていては**姓名と年齢と遺伝子の1部がたまたま一致した山田さん**を生成しているようで、違和感を感じます。生成された `me`、`me_1`、`me_2`は それぞれ **別人** だと思います。ペットについても同です。
23
+ その山田さんをコピーをしていては**姓名と年齢と遺伝子の1部がたまたま一致した別人の山田さん**を生成しているようで、違和感を感じます。生成された `me`、`me_1`、`me_2`は それぞれ **別人** だと思います。`cat`、`cat_1`についても同です。
24
24
 
25
25
  `me`、`me_1`、`me_2` が同一の人物を指しているのであれば `Person`や`Pet`はミュータブルであるべきではないでしょうか。
26
26
 

5

誤記

2020/07/31 17:20

投稿

BluOxy
BluOxy

スコア2663

answer CHANGED
@@ -22,7 +22,7 @@
22
22
 
23
23
  その山田さんをコピーをしていては**姓名と年齢と遺伝子の1部がたまたま一致した山田さん**を生成しているようで、違和感を感じます。生成された `me`、`me_1`、`me_2`は それぞれ **別人** だと思います。ペットについても同様です。
24
24
 
25
- `me`、`me_1`、`me_2` が同一の人物を指しているのであれば `Human`や`Pet`はミュータブルであるべきではないでしょうか。
25
+ `me`、`me_1`、`me_2` が同一の人物を指しているのであれば `Person`や`Pet`はミュータブルであるべきではないでしょうか。
26
26
 
27
27
  ---
28
28
  現実世界のオブジェクトでたとえ話をするのは混乱を招くような気がしますが…、イミュータブルであるべきオブジェクトの例を1つ挙げるなら **硬貨** でしょうか。

4

文章の修正

2020/07/31 17:18

投稿

BluOxy
BluOxy

スコア2663

answer CHANGED
@@ -5,8 +5,17 @@
5
5
  > イミュータブルなオブジェクト同士が相互参照するような設計は避けるべき
6
6
 
7
7
  ケースバイケースです。今回の`Person`と`Pet`の関係であれば相互参照をして良いと思います。
8
- しかし、イミュータブルである必要性はありません。`me.age = 40;` で良いでしょう。
8
+ しかし、イミュータブルである必要性はありません。
9
9
 
10
+ ですから、
11
+
12
+ > イミュータブルなオブジェクト同士が相互参照している場合はどのように対処すれば良いのか?
13
+
14
+ についてはイミュータブルにすることをやめて、 `me.age = 40;` で良いでしょう。
15
+
16
+ > me.copyWith(pets: me.pets + cat);
17
+ > me_1.copyWith(age: 40);
18
+
10
19
  `me`、`me_1`、`me_2`のように変更のたびインスタンスのコピーを生成していてはまるでたまたま遺伝子が同じのコピー人間を生成しているようです。
11
20
 
12
21
  今回のケースでは、姓名が変わろうが歳を取ろうがその山田さんは同一人物でしょう。

3

文章の修正

2020/07/31 17:18

投稿

BluOxy
BluOxy

スコア2663

answer CHANGED
@@ -11,13 +11,15 @@
11
11
 
12
12
  今回のケースでは、姓名が変わろうが歳を取ろうがその山田さんは同一人物でしょう。
13
13
 
14
- その山田さんをコピーをしていては**姓名と年齢と遺伝子の1部がたまたま一致した山田さん**を生成しているようで、違和感を感じます。れは **実質的な別人** だと思います。ペットについても同様です。
14
+ その山田さんをコピーをしていては**姓名と年齢と遺伝子の1部がたまたま一致した山田さん**を生成しているようで、違和感を感じます。生成さた `me`、`me_1`、`me_2`それぞれ **別人** だと思います。ペットについても同様です。
15
15
 
16
- ですから、`Human`や`Pet`はミュータブルであるべきではないでしょうか。
16
+ `me`、`me_1`、`me_2` が同一の人物を指しているのであれば `Human`や`Pet`はミュータブルであるべきではないでしょうか。
17
17
 
18
18
  ---
19
- 現実世界のオブジェクトでたとえ話をするのは混乱を招くような気がしますが…、イミュータブルであるべきオブジェクトの例を挙げるなら **硬貨** でしょうか。
19
+ 現実世界のオブジェクトでたとえ話をするのは混乱を招くような気がしますが…、イミュータブルであるべきオブジェクトの例を1つ挙げるなら **硬貨** でしょうか。
20
20
 
21
- 硬貨の金銭的価値(フィールドの値)は最初(インスタンス生成時)に決めると思いますが、途中でその価値が変化すると困る場合があります。うより困ります。
21
+ 硬貨の金銭的価値(フィールドの値)は最初(インスタンス生成時)に決めると思いますが、途中でその価値が変化すると困る場合があります。いえ、おそらく困ります。
22
22
 
23
- 明日から我々が使っている100円玉の価値がもし50円になったら困りますよね。100と書いてあるのに価値は50円です。私困ります。もしcn202kさも困ると感じたなら、それをイミュータブルにしましょう
23
+ 明日から我々が使っている100円玉の価値が50円になったら困りますよね。硬貨に 100 と書いてあるはずなのに金銭的価値は 50 円です。私なら困ります。半額で自動販売機でジュースが買えたり、アーケードゲームが遊べて一部の人たちはラッキーかもしれませ、それを商売ている側の人たちは確実に困りすね
24
+
25
+ cn202kさんも困ると感じたなら、それはイミュータブルであるべきです。

2

文章の修正

2020/07/31 17:16

投稿

BluOxy
BluOxy

スコア2663

answer CHANGED
@@ -1,6 +1,6 @@
1
1
  > このあとme_1.ageを30から40に変更しようと思ったら
2
2
 
3
- この時点でイミュータブルをやめます。
3
+ **この時点でイミュータブルをやめます。**
4
4
 
5
5
  > イミュータブルなオブジェクト同士が相互参照するような設計は避けるべき
6
6
 
@@ -9,12 +9,15 @@
9
9
 
10
10
  `me`、`me_1`、`me_2`のように変更のたびインスタンスのコピーを生成していてはまるでたまたま遺伝子が同じのコピー人間を生成しているようです。
11
11
 
12
+ 今回のケースでは、姓名が変わろうが歳を取ろうがその山田さんは同一人物でしょう。
13
+
14
+ その山田さんをコピーをしていては**姓名と年齢と遺伝子の1部がたまたま一致した山田さん**を生成しているようで、違和感を感じます。それは **実質的な別人** だと思います。ペットについても同様です。
15
+
16
+ ですから、`Human`や`Pet`はミュータブルであるべきではないでしょうか。
17
+
12
18
  ---
13
19
  現実世界のオブジェクトでたとえ話をするのは混乱を招くような気がしますが…、イミュータブルであるべきオブジェクトの例を挙げるなら **硬貨** でしょうか。
14
20
 
15
- 硬貨の金銭的価値(フィールドの値)は最初(インスタンス生成時)に定すると思いますが、途中でその価値が変化すると困る場合があります。そのよな時にイミュータブルなオブジェクトを利用します。
21
+ 硬貨の金銭的価値(フィールドの値)は最初(インスタンス生成時)に決ると思いますが、途中でその価値が変化すると困る場合があります。といより困ります。
16
22
 
17
- 今回のケースでは、きっと姓名が変わろうが歳を取ろうがその山田さんは同一人物でしょう。
18
- その山田さんをコピーをしていては姓名と年齢と遺伝子1部がたま一致た別人の山田さんを生成していようで、違和を感じまペットも同様です。
23
+ 明日から我々が使っている100円玉価値もし50円になっら困りすよね。100と書いてあるのに価値は50円です。私は困りす。もcn202kさんも困感じたなら、それをイミュータブルにししょう
19
-
20
- ですから、`Human`や`Pet`はイミュータブルの方が分かりやすいのではないでしょうか。

1

文章の修正

2020/07/31 17:10

投稿

BluOxy
BluOxy

スコア2663

answer CHANGED
@@ -7,7 +7,7 @@
7
7
  ケースバイケースです。今回の`Person`と`Pet`の関係であれば相互参照をして良いと思います。
8
8
  しかし、イミュータブルである必要性はありません。`me.age = 40;` で良いでしょう。
9
9
 
10
- `me`、`me_1`、`me_2`のように変更のたびインスタンスのコピーを生成していてはまるで遺伝子が完全にの人間を生成しているようです。
10
+ `me`、`me_1`、`me_2`のように変更のたびインスタンスのコピーを生成していてはまるでたまたま遺伝子が同コピー人間を生成しているようです。
11
11
 
12
12
  ---
13
13
  現実世界のオブジェクトでたとえ話をするのは混乱を招くような気がしますが…、イミュータブルであるべきオブジェクトの例を挙げるなら **硬貨** でしょうか。