まず、貧しいタイトルのためのお詫び - 私は問題をよりよく説明するのに十分なF#を理解していません。私は、異なる通貨でお金を表現する、と私は無事マネー+お金を行うことができるように(+)演算子をオーバーロードしています パターンマッチングによるF#の識別された共用体インスタンスの比較
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"
:
は、この単純なDUを考えてみましょう。しかし、もし私が多くの通貨を持っているなら、マッチステートメントは書くのが面倒になるでしょう。
match first, second with
| _(x), _(y) -> _(x + y)
同じ結果を得るには別の方法がありますか?私は、hereと記載されている制限のために計量単位を検討し、廃棄しました。
これをF#で測定するべきではありませんか? –
私は測定単位を使用したいと思いますが、測定値が実行時に消去されるため、外部ソースからデータを読み取るときに安全性が提供されません(リンクされた質問を参照)。私は間違っていることを証明したい! – Akash