0
我想構建一個通用類,其中包含T
類型的對象。包含類必須對這些對象執行一些運算符,特別是像+
,-
,*
和/
這樣的運算符。我怎樣才能確保對象的類型實現這些操作符?如何確保泛型中的類型實現了Dart中的某些運算符?
具體來說,我正在實現一個矩陣類,就像在數學矩陣中一樣。我本來可以只允許double
元素,但我希望能夠製作自定義數字類的矩陣,如有理數或複數(這是較大項目的一部分)。
我現在實現了簽名
class Matrix<T extends MatrixElement> {
final int _rows; // The number of rows
final int _cols; // The number of columns
...
final List<T> _elements; // Matrix data, [i*step+j] is row i, col j.
哪裏MatrixElement
是與運營商的一個抽象類,像
dynamic operator + (dynamic other);
我可能已經改變了Matrix類簡單class Matrix<T> { ... }
,但隨後可以在出現錯誤運行時和Dart編輯器中充滿了關於操作員未被定義爲類Object
的警告。
我的直覺所說的是類似於class Matrix<T implements MatrixElement> { ... }
,但Dart似乎並不支持這一點。
謝謝!我在問題中調整了我的表述,因爲我的意思是說,如果我沒有指定任何類型的T來擴展(無界限)(這是我在初始階段嘗試的,在添加'extends MatrixElement'部分之前) 。 – Mikke
接受你的答案,因爲它可能是最好的。去年在Go上寫作之後,我想念Go如何使用接口來處理類型。 – Mikke