問題タブ [fortran2008]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
function - Iso_Fortran_Env を使用して関数の Kind 値を設定する
ISO Fortran Env の組み込み関数を使用して、Fortran 2008 に慣用的な方法で関数の戻り値の KIND 値を設定するにはどうすればよいでしょうか?
通常、メイン プログラム内では、次のように ISO Fortran 組み込み関数を使用できます。
しかし、REAL64 と double はどちらも上記のメイン関数内でのみ定義されるため、これらの組み込み関数を外部関数に使用する便利な方法はないようです。次のように main 内で関数の KIND を定義しようとしています。
少なくとも私のシステムでは、タイプの不一致エラーがスローされます (私のシステムでは double は KIND=8 として定義され、デフォルトの real は KIND=4 として定義されます)。いつでも を使用できますreal(kind=8) function some_function()
が、移植性のために使用したくありません。さらに、ある場所で iso_fortran_env の REAL64 を使用し、別の場所で方向転換して KIND=8 を使用するのは、単に汚いと感じます。
以下のように、それを達成するための簡単な(または少なくとも読みやすい)方法はありますか?
class - Fortran クラスの異種配列
私は抽象型と彼から継承するいくつかの型を持っています。次に、これらの継承された型のインスタンスの配列を作成する必要がありますが、Fortran で可能かどうかはわかりません。
私は、Creating heterogeneous arrays in Fortranのように、いくつかのラッパー タイプを作成しようとしました。
しかし、私はこのエラーが発生しています:
私は何を間違っていますか?または、それを行う他の正しい方法はありますか?
試行 2
francescalus の回答に応じてコードを編集しました。
そして、私は別のエラーが発生しています:
class - Fortran 2008 - CLASS(*) のユーザー定義 I/O プロシージャ
任意の他の型のラッパーとして機能する型を作成しようとしているので、Fortran クラスの異種配列およびFortran での異種配列の作成でアドバイスされているように、異種配列を作成できます。
だから、私はこのように実装しようとしました:
今、私はエラーが発生しています
そこで、次のように I/O を実装しようとしました。
しかし、私の新しいメソッドでも同じエラーが発生します:
だから、私は2つの質問があります:
- どうすれば正しく実装できますか?
- アイテム変数をポインターまたは割り当て可能な変数として宣言する方が良い/簡単ですか?