我将尝试定义一个重载运算符,例如|+|,如下所示:
问题在于,我无法执行以下操作:
因为在
谢谢。
let inline ( |+| ) (m1 : #IMeasurable) (m2 : #IMeasurable) = m1.Measure + m2.Measure
问题在于,我无法执行以下操作:
let three = m1 |+| m2 |+| m3
因为在
(m1 : int) (m2 : #IMeasurable)
这种情况下,运算符 |+|
未被定义。有没有一种方法可以重载这个运算符或使用静态类型约束使上述表达式成立?有没有一种方法可以修改我可以编辑的 IMeasurable
以使这种情况成为可能?还有其他什么可以让上述表达式工作的方法吗?谢谢。
IMeasurable
没有意义,恐怕不行。 - GregRosIMeasurable
没有逻辑意义,那么你可能需要遵循 @Gustavo 的建议。虽然也许这意味着拥有一个简单的将IMeasurable
转换为int
的函数,然后使用标准的+
运算符进行int
相加可能是一个不错的选择。自定义运算符很难被发现,而像m1.Measure + m2.Measure + m3.Measure
这样的表达式既不太长,又容易编写和理解。 - Tomas Petricek