回答編集履歴

1

ついき

2020/02/10 03:20

投稿

MasakiHori
MasakiHori

スコア3391

test CHANGED
@@ -5,3 +5,53 @@
5
5
  extension Array: Container where Element: Equatable {}
6
6
 
7
7
  ```
8
+
9
+
10
+
11
+ ----
12
+
13
+ 追記
14
+
15
+
16
+
17
+ ```swift
18
+
19
+ extension Array where Element:Equatable{}
20
+
21
+ ```
22
+
23
+ はArrayのElementをEquatableに準拠させるという意味ではありません。
24
+
25
+
26
+
27
+ これは、ArrayのうちElementがEquatableであるもののみに拡張を与えるという宣言です。
28
+
29
+
30
+
31
+ 例えば
32
+
33
+ ```swift
34
+
35
+ extension Array where Element: Equatable {
36
+
37
+ func allSame() -> Bool {
38
+
39
+ guard let e = first else { return true }
40
+
41
+ return reduce(true) { $0 ? $1 == e : false } // $1 == e はElementがEquatableでなければ実行不可能
42
+
43
+ }
44
+
45
+ }
46
+
47
+ ```
48
+
49
+ のようなElementがEquatableでなければ実行不可能なメソッドの追加などを行う時に利用します。
50
+
51
+
52
+
53
+ 僕が回答したextensionは
54
+
55
+ ArrayのうちElementがEquatableであるもののみをContainerに準拠させる。
56
+
57
+ という意味になります。