質問: 例えば、あるクラスでAプロトコルを採用した場合、 プロトコルの宣言内容に沿って、 クラスの内にインスタンスメソッド・プロパティ等を定義します。 しかし演算子のプロトコル(例えば、Equatable, Comparableなど)を採用した場合、 定義は、グローバル関数として実装します。 なにか仕様的に矛盾している感じがあり、理解できません。 演算子のプロトコルを採用した場合、実装がグローバル関数でよいのか、教えてください。
回答: 一般のプロトコルは、そのクラスに「機能」を付加したい時に使うのでクラス内で実装を行いますが、演算子は、そのクラスと別の何か(同じクラスかもしれないし別のクラスかもしれない)との「関係」を付加したい時に使うので、そのクラスの外で定義した方が自然ではないでしょうか。