我正在玩这个小东西,其中一组可以通过翻转测试来充当它的补充。为了完成这项工作,我创建了成员操作符的特殊版本。
class Complement {
has $.set;
}
multi infix:<∈> ( $a, Complement:D $c ) { $a ∉ $c.set }
multi infix:<∉> ( $a, Complement:D $c ) { $a ∈ $c.set }
my $set = (1, 2, 3).Set;
my $c = Complement.new: set => $set;
put 3 ∈ $set;
put 4 ∈ $c;
根据我infix:<∉>
对另一个的定义,更一般的定义似乎已经消失了。没有其他候选人:
True
Cannot resolve caller infix:<∉>(Int, Set); none of these signatures match:
($a, Complement:D $c)
in sub infix:<∈> at /Users/brian/Desktop/complement.p6 line 11
in block <unit> at /Users/brian/Desktop/complement.p6 line 18
我需要做些什么来保留具有不同签名的先前定义?