是否可以让操作员在操作中使用先例值
Can it be possible to have an operator working with the precedent value in an operation
我知道一个运算符不应该,也不能在两个 "directions" 中使用。但我想知道每个方向是否都有一个操作员,我想知道哪个。
我的问题用一个例子来解释更简单,所以这里是:
void main(){
int i = 1;
Test y = new Test(2);
print(y+i); // Working, print 3
print(i+y); // Not working crash, I would like this to work
}
class Test {
dynamic _data;
Test(value) : this._data = value;
operator+(other) => _data + value;
toString() => _data.toString();
}
因为我无法在 class int
中添加运算符,是否有其他运算符可以在 class Test
中实现以支持此操作。
简单的答案是 "no"。您只能将 num
(int
或 double
)添加到 int.
如果结果应该是一个整数,你可以添加一个整数 getter
class Test {
dynamic _data;
Test(value) : this._data = value;
operator+(other) => _data + value;
toString() => _data.toString();
int asInt => _data;
}
print(i+y.asInt);
在这种情况下有点危险,因为 _data
是动态的。
你可以使用泛型
class Test<T> {
T _data;
Test(this._data);
operator+(other) => _data + value; //
toString() => _data.toString();
T asBaseType => _data;
}
我知道一个运算符不应该,也不能在两个 "directions" 中使用。但我想知道每个方向是否都有一个操作员,我想知道哪个。 我的问题用一个例子来解释更简单,所以这里是:
void main(){
int i = 1;
Test y = new Test(2);
print(y+i); // Working, print 3
print(i+y); // Not working crash, I would like this to work
}
class Test {
dynamic _data;
Test(value) : this._data = value;
operator+(other) => _data + value;
toString() => _data.toString();
}
因为我无法在 class int
中添加运算符,是否有其他运算符可以在 class Test
中实现以支持此操作。
简单的答案是 "no"。您只能将 num
(int
或 double
)添加到 int.
如果结果应该是一个整数,你可以添加一个整数 getter
class Test {
dynamic _data;
Test(value) : this._data = value;
operator+(other) => _data + value;
toString() => _data.toString();
int asInt => _data;
}
print(i+y.asInt);
在这种情况下有点危险,因为 _data
是动态的。
你可以使用泛型
class Test<T> {
T _data;
Test(this._data);
operator+(other) => _data + value; //
toString() => _data.toString();
T asBaseType => _data;
}