2017-05-10 13 views
1

Juliaには、ある特定の温度、圧力、または密度比が与えられたときにすべてが等エントロピー関係にあるいくつかの関数があります。私は異なる種類の比率を表すNumber(またはFloat64、いずれか動作するもの)をラップする3つの型を作りたいと思います。JuliaのNumberのラッパークラスを作成する

これらのタイプは、タイプアサーション(つまり、:: PressureRatio!= :: TemperatureRatio)で区別する必要があります。私は1つのフィールドの複合型を作ることができますが、数学演算が期待どおりに動作するように、数値をsubtypeするのが理想的です。

現在、私はNumberのジェネリックサブクラスを作成しようとしていますが、インスタンス化しようとすると、Float64からPressureRatio(たとえば)に変換する変換メソッドはありません。

誰にでも良いアイデアがありますか?

ありがとうございます!ここで

+4

"現在のところ、Numberのジェネリックサブクラスを作成しようとしましたが、インスタンス化しようとすると、Float64からPressureRatio(たとえば)に変換する変換メソッドはありません。あなたは何を試してみることができますか?たくさんのメソッドを実装する必要があります。しかし、あなたがユニット計算を実行するためにタイプシステムを使用しようとしているのでなければ、なぜあなたがこれをやっているのかはわかりません。その場合はUnitful.jlをチェックしてください。 –

+0

アイデアは、 「圧力比を使用しているのか、温度比を使用しているのか、密度比を使用しているのか?ユーザー/開発者のエラーの影響を受けやすい余分な文字列引数を使用します。 これらの種類の型を作成することにより、すべてが明示的になり、Juliaの複数のディスパッチを利用できます。 –

+0

また、この種のユースケースが将来の言語機能としてサポートされていれば、それはちょっと涼しいでしょう。これは、OOP言語ではいくつかのダミークラスで何かをサブクラス化することでかなりうまくいきます...しかし、それはやや複雑な/場合によっては。 –

答えて

関連する問題