1
我有一些代碼需要一個表達式,並使用它很好;麻煩的是,我的約束傳遞的表達式是PropertyGet是運行時間所限,無法編譯時間:如何將F#函數參數約束到PropertyGet?
member x.f(propertyExpr) =
match propertyExpr with
| PropertyGet(_, propOrValInfo, _) ->() // do something
| _ -> failwith "Unexpected expression type; needs PropertyGet"
我真正喜歡的是在編譯時限制表達的類型。以下舉例說明了我的意圖:
member x.f(propertyExpr: Expr.PropertyGet) =
() // do something
當然,這不會編譯。期望的屬性是:編譯時檢查 - 更安全,並且我有更少的例外擔心。但如何到達那裏?
這太糟糕了。 –