gpt4 book ai didi

syntax - F# : ( |+| ) 中的重载内联运算符

转载 作者:行者123 更新时间:2023-12-01 07:11:08 25 4
gpt4 key购买 nike

我正在尝试定义一个重载运算符,例如|+| ,如下:

let inline ( |+| ) (m1 : #IMeasurable) (m2 : #IMeasurable) = m1.Measure + m2.Measure

问题是,我不能做这样的事情:
let three = m1 |+| m2 |+| m3

因为运营商 |+|没有为案例定义 (m1 : int) (m2 : #IMeasurable) .有没有办法重载这个运算符或使用静态类型约束来使上述表达式成为可能?有没有办法修改 IMeasurable (我可以编辑)所以这是可能的?还有什么可以让上述表达式起作用的吗?

谢谢你。

最佳答案

type Overloads = Overloads with
static member ($) (Overloads, m1: #IMeasurable) = fun (m2: #IMeasurable) -> m1.Measure + m2.Measure
static member ($) (Overloads, m1: int) = fun (m2: #IMeasurable) -> m1 + m2.Measure

let inline ( |+| ) m1 m2 = (Overloads $ m1) m2

没有经过测试,因为我没有 IMeasurable,但它可以完成这项工作。

关于syntax - F# : ( |+| ) 中的重载内联运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12971965/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com