プロトコルから要求される演算子関数
protocol BaseProtcol{ static func <(lhs: Self, rhs: Self) -> Bool static func MethodA()-> Bool } struct AClass : BaseProtcol{ static func MethodA()->Bool{ return true } } func <(lhs: AClass, rhs: AClass) -> Bool{ return true } let a = AClass() let b = AClass() print( a
BaseProtocolには、二つのstatic関数が宣言されており、
このプロトコルを適合する場合、2つの関数を実装します。
このとき、構造体のメンバとして実装すべきだと思いますが、
<演算子関数は、メンバ関数としてまたはグローバル関数としてとどちらでも定義できます。
下記のMethodA()はメンバ関数としてしか実装できません。
この違いは、演算子とそうでないものに見えますが、なぜ演算子はそのようなことが
許されるのでしょうか。教えてください。
疑問なのは、演算子をグローバル関数として実装したとき、
AClassがBaseProtcolに適合しているといえるのかというところです。