我已经导入了一个向量数学库,并且想添加我自己的 (*) 和 (+) 运算符,同时保留基本 int 和 float 的现有运算符。
我尝试了以下方法:
let inline (*) (x : float) (y : Vector) = y.Multiply(x)
let inline (*) (x : Vector) (y : float) = x.Multiply(y)
let inline (+) (x : Vector) (y : Vector) = x.Add(y)
这有两个问题:
- 它似乎删除了
int + int
andint * int
, and - 第二行(旨在完成交换性)无法编译,因为它是“重复定义”。
如何在导入的 Vector 类型上定义一些交换运算符,同时又不会丢失对 int 和 float 的这些操作?
(我希望能够使用 * 和 + 在其他地方编写通用代码,而不必指定 float/Vector/int 类型约束)。