2015-04-22 46 views
1

我知道單個操作員不應該也不能在兩個「方向」上使用。但我想知道每個方向是否有操作員,以及我錯過了哪一個操作員。 我的問題是方式更簡單的用一個例子來解釋,所以在這裏它是:是否可以讓操作員在操作中使用先驗值

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(); 
} 

因此,正如我不能在類int添加操作,是否有其他運營商類Test落實支持這個操作。

回答

1

簡單的答案是「否」。您只能將numintdouble)添加到int中。

如果結果應該是int,你可以添加一個int吸氣

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; 
} 
+1

這似乎是最簡單的版本,即使這不是我喜歡的方式,謝謝! – fandegw

相關問題