プロトコルから要求される演算子関数
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に適合しているといえるのかというところです。