gpt4 book ai didi

具有多态(在 OO 意义上)返回类型的 F# 函数

转载 作者:行者123 更新时间:2023-12-02 07:54:21 26 4
gpt4 key购买 nike

是否可以让一个函数返回多个类型,只要它们共享一个公共(public)基类,而不强制转换每个返回值?

例如:

[<AbstractClass>]
type A() =
abstract Do : unit -> unit

type B() =
inherit A()
override x.Do() = ()

type C() =
inherit A()
override x.Do() = ()

let getA i : A =
if i = 0 then new B() else new C() //Error: This expression was expected to have type A but here has type B

最佳答案

不,你必须投:

let getA i : A =
if i = 0 then upcast new B() else upcast new C()

关于具有多态(在 OO 意义上)返回类型的 F# 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1792879/

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