回答編集履歴
1
==が演算子でない、という間違いを訂正。Equatableプロトコルについて追記。
test
CHANGED
@@ -8,8 +8,8 @@
|
|
8
8
|
|
9
9
|
|
10
10
|
|
11
|
-
余談ですが、`==`
|
11
|
+
余談ですが、`==`演算子の実体は関数です。`3 == "3"`と書いたら、3と"3"を引数にとる`==`関数を探します。"3"はStringかCharactorだろうし、3はIntかFloatかDoubleか、その他いっぱいありますが、どれかに一致する`==`関数があったらそれにします。複数あったらエラーになるかと思いましたが、実際にはならなくて、どれかが使われます。
|
12
12
|
|
13
13
|
|
14
14
|
|
15
|
-
関数なので、IntとStringを比較するような`==`関数を作ることも可能です。可能ですが、やらないほうがいいです。余程上手に設計しないと、想定していない動作をするようなコードになってしまい、保守性や可読性が下がると思います。
|
15
|
+
関数なので、IntとStringを比較するような`==`関数を作ることも可能です。可能ですが、やらないほうがいいです。余程上手に設計しないと、想定していない動作をするようなコードになってしまい、保守性や可読性が下がると思います。また、プロトコル指向言語であるSwiftはEquatableというプロトコルを用意していて、それは同じ型のもの同士の比較を前提としています。独自の型についてEquatableに準拠するのは良いアイデアですが、違う型同士の比較をサポートするのは**Swift的でない**と思います。
|