在F#我有一个返回System.Linq.Expression实例函数:F#返回类型强制
and System.Object with
member this.ToExpression() =
match this with
| :? System.Int32 -> Expression.Constant(this) :> Expression
| :? System.Boolean -> Expression.Constant(this) :> Expression
| :? Tml.Runtime.Seq as s -> s.ToExpression()
| _ -> failwith "bad expression"
如果我忽略的回报强制类型转换值F#将推断功能常量表达式的返回类型。我的第一个想法是明确地将返回类型标记为:#Expression,但那不起作用。有没有更好的方法来做到这一点,而不需要手动将返回类型转换为最通用的类型?
谢谢。
编辑:感谢所有人的答案。我将使用明确的返回类型+ upcast方案。