首先,對於糟糕的標題表示歉意 - 我不明白足夠的F#來更好地描述問題。通過模式匹配來比較F#歧視聯合實例
考慮一個簡單的DU:
type Money =
| USD of decimal
| GBP of decimal
| EUR of decimal
static member (+) (first: Money, second: Money) =
match first, second with
| USD(x), USD(y) -> USD(x + y)
| GBP(x), GBP(y) -> GBP(x + y)
| EUR(x), EUR(y) -> EUR(x + y)
| _ -> failwith "Different currencies"
我代表不同的貨幣資金,以及超載(+)運算符,這樣我可以有把握地做金錢+錢。但是,如果我有很多貨幣,那麼匹配語句就會變得單調乏味。有什麼方式表達類似的:
match first, second with
| _(x), _(y) -> _(x + y)
或者是否有不同的方式來實現相同的結果?由於here的限制,我考慮並丟棄了度量單位。
你不應該在F#中使用這個單位嗎? –
我喜歡使用度量單位,但由於度量在運行時被刪除,因此在從外部來源讀取數據時不會提供任何安全性(請參閱鏈接的問題)。我很想被證明是錯的! – Akash