回答編集履歴
3
内容の改善
answer
CHANGED
@@ -18,7 +18,7 @@
|
|
18
18
|
|
19
19
|
そして、StringクラスとArrayクラスは互いに無関係なクラスなので、たまたま`delete`という同じ名前のメソッドが定義されているだけです。
|
20
20
|
|
21
|
-
上記の議論を総合すると、「何故delete!としていないのに定数の中身を破壊的に変更できるのでしょうか?」という問いに対しては、次のような回答が導出されます。
|
21
|
+
上記の議論を総合すると、「(Arrayクラスでは)何故delete!としていないのに定数の中身を破壊的に変更できるのでしょうか?」という問いに対しては、次のような回答が導出されます。
|
22
22
|
|
23
23
|
- !が付いているからといって破壊的メソッドとは限らない
|
24
24
|
- !が付いていないからといって非破壊的メソッドとは限らない
|
@@ -27,6 +27,6 @@
|
|
27
27
|
- 結果として、Arrayクラスには「破壊的な`delete`メソッド(!なしの破壊的メソッド)」のみが定義された
|
28
28
|
|
29
29
|
とはいえ、このあたりの議論は、クラスライブラリの**設計**の話になります。
|
30
|
-
僕
|
30
|
+
僕は自らの経験に基づいて上のような説明をしましたが、実際のところ(本当のいきさつ)はまつもとさん(Matz)や、コミッタのみなさんしかわからないと思います。
|
31
31
|
|
32
32
|
本当の真相を知りたい場合は、まつもとさんに「ねえ、どうして!?」と突撃インタビューするのが一番確実だと思います(笑)。
|
2
説明の修正
answer
CHANGED
@@ -20,8 +20,8 @@
|
|
20
20
|
|
21
21
|
上記の議論を総合すると、「何故delete!としていないのに定数の中身を破壊的に変更できるのでしょうか?」という問いに対しては、次のような回答が導出されます。
|
22
22
|
|
23
|
-
- 破壊的メソッドは必ずしも!を付けなくてよい
|
24
|
-
- !が付か
|
23
|
+
- !が付いているからといって破壊的メソッドとは限らない
|
24
|
+
- !が付いていないからといって非破壊的メソッドとは限らない
|
25
25
|
- !ありのメソッドが定義されている場合は、!なしの同名メソッドも定義した方がよい
|
26
26
|
- Arrayクラスには(Stringクラスと異なり)delete系のメソッドが1種類しか定義されていない
|
27
27
|
- 結果として、Arrayクラスには「破壊的な`delete`メソッド(!なしの破壊的メソッド)」のみが定義された
|
1
URLにリンクを追加
answer
CHANGED
@@ -13,8 +13,8 @@
|
|
13
13
|
|
14
14
|
APIドキュメントを見てもらえればわかると思いますが、Stringクラスには`delete`と`delete!`の2種類がありますが、Arrayクラスには`delete`メソッドしかありません。
|
15
15
|
|
16
|
-
https://docs.ruby-lang.org/ja/latest/class/String.html
|
16
|
+
[https://docs.ruby-lang.org/ja/latest/class/String.html](https://docs.ruby-lang.org/ja/latest/class/String.html)
|
17
|
-
https://docs.ruby-lang.org/ja/latest/class/Array.html
|
17
|
+
[https://docs.ruby-lang.org/ja/latest/class/Array.html](https://docs.ruby-lang.org/ja/latest/class/Array.html)
|
18
18
|
|
19
19
|
そして、StringクラスとArrayクラスは互いに無関係なクラスなので、たまたま`delete`という同じ名前のメソッドが定義されているだけです。
|
20
20
|
|