@@ -50,31 +50,58 @@ public OperableObject(int num)
50
50
{
51
51
return new OperableObject ( a . Num - b . Num ) ;
52
52
}
53
+ public static OperableObject operator - ( OperableObject a , int b )
54
+ {
55
+ return new OperableObject ( a . Num - b ) ;
56
+ }
53
57
54
58
public static OperableObject operator * ( OperableObject a , OperableObject b )
55
59
{
56
60
return new OperableObject ( a . Num * b . Num ) ;
57
61
}
62
+ public static OperableObject operator * ( OperableObject a , int b )
63
+ {
64
+ return new OperableObject ( a . Num * b ) ;
65
+ }
58
66
59
67
public static OperableObject operator / ( OperableObject a , OperableObject b )
60
68
{
61
69
return new OperableObject ( a . Num / b . Num ) ;
62
70
}
71
+ public static OperableObject operator / ( OperableObject a , int b )
72
+ {
73
+ return new OperableObject ( a . Num / b ) ;
74
+ }
75
+
63
76
64
77
public static OperableObject operator & ( OperableObject a , OperableObject b )
65
78
{
66
79
return new OperableObject ( a . Num & b . Num ) ;
67
80
}
81
+ public static OperableObject operator & ( OperableObject a , int b )
82
+ {
83
+ return new OperableObject ( a . Num & b ) ;
84
+ }
85
+
68
86
69
87
public static OperableObject operator | ( OperableObject a , OperableObject b )
70
88
{
71
89
return new OperableObject ( a . Num | b . Num ) ;
72
90
}
91
+ public static OperableObject operator | ( OperableObject a , int b )
92
+ {
93
+ return new OperableObject ( a . Num | b ) ;
94
+ }
95
+
73
96
74
97
public static OperableObject operator ^ ( OperableObject a , OperableObject b )
75
98
{
76
99
return new OperableObject ( a . Num ^ b . Num ) ;
77
100
}
101
+ public static OperableObject operator ^ ( OperableObject a , int b )
102
+ {
103
+ return new OperableObject ( a . Num ^ b ) ;
104
+ }
78
105
79
106
public static OperableObject operator << ( OperableObject a , int offset )
80
107
{
@@ -134,10 +161,27 @@ public void ForwardOperatorOverloads()
134
161
from { module } import *
135
162
cls = { name }
136
163
a = cls(2)
137
- b = cls(10)
164
+ b = 10
165
+ c = a + b
166
+ assert c.Num == a.Num + b
138
167
139
- c = a + b.Num
140
- assert c.Num == a.Num + b.Num
168
+ c = a - b
169
+ assert c.Num == a.Num - b
170
+
171
+ c = a * b
172
+ assert c.Num == a.Num * b
173
+
174
+ c = a / b
175
+ assert c.Num == a.Num // b
176
+
177
+ c = a & b
178
+ assert c.Num == a.Num & b
179
+
180
+ c = a | b
181
+ assert c.Num == a.Num | b
182
+
183
+ c = a ^ b
184
+ assert c.Num == a.Num ^ b
141
185
" ) ;
142
186
}
143
187
[ Test ]
0 commit comments