gpt4 book ai didi

inheritance - 有区别的联合成员方法

转载 作者:行者123 更新时间:2023-12-03 16:38:50 24 4
gpt4 key购买 nike

我想定义一个被歧视联合的所有成员共享的方法。目前我已经像这样实现了它,但它看起来很不优雅——当然有更好的方法。建议?

type A = 
{AData:string}
member this.SharedMethod (x:float) : int= ...
type B =
{BData:float}
member this.SharedMethod (x:float) : int= ...
type AB =
| A of A
| B of B

let CallSharedMethod (ab:AB) x =
match ab with
| AB.A(a') -> a'.SharedMethod x
| AB.B(b') -> b'.SharedMethod x

最佳答案

这样的事情怎么办?

type AB =
| A of string
| B of float

member self.SharedMethod (x : float) =
match self with
| A s -> x
| B f -> f + x

这假设您希望 sum 类型的每个变体(又名可区分联合)对 float 参数执行不同的操作。

对于 A 的情况,我只是返回原始值,因为我无能为力(因为在 stringfloat 之间没有普遍有用的关系会产生 float )。

关于inheritance - 有区别的联合成员方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27136056/

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