2
只要它們共享一個公共基類而不投射每個返回值,是否有可能返回多個類型?F#函數具有多態性(在OO意義上)返回類型
例如:
[<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
@Daniel如果你不想在任何地方施展,你可以使用工廠。 – gradbot 2009-11-25 01:58:33
我想我可以稍微縮短到以下幾點? let getA i:A = upcast(if i = 0 then new B()else new C()) 我目前沒有可用的VS來試用它。 – Daniel 2009-11-28 22:33:47