是否可以让函数返回多个类型,只要它们共享一个公共基类,而不转换每个返回值?
例如:
[<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
答案 0 :(得分:6)
不,你必须施展:
let getA i : A =
if i = 0 then upcast new B() else upcast new C()
答案 1 :(得分:1)
我相信你可以使用带有约束的泛型来定义'a a:&gt;的返回类型SomeType但我现在需要启动VS来检查。
编辑:nope ..诅咒......你必须施展。