Avatar
あーなるほど、そういうことですね。パターン中のenum case呼び出し的な構文は半強制的に enum-case-pattern にされてしまうので ~= でのマッチはできないですね。もしどうしても 式として扱いたいなら、パターンになり得ない式の中に入れ込む必要があります。たとえば .self enum O<W> { case some(W) } func ~=<L, R> (l: O<L>, r: O<R>) -> Bool { return true } if case O<Double>.some(2.4).self = O<Int>.some(-1) { print("OK") } とはいえこの場合、O<Double>.some(2.4).self 全体が式であり内部にパターンを入れられないので、associated value に Range を入れてマッチとかは出来ないです。 (edited)