タイトルが適切かどうかわかりません。提案は大歓迎です。Fortranで関数名をエイリアスする方法
ここで私がしたいことがあります。条件を確認し、ループ内で使用する関数を決定します。たとえば、
if (a < 0) then
loop_func = func1
else
loop_func = func2
endif
私はループを書くときにポインタとしてloop_func
を使うことができます。両方の関数は全く同じ入力を受け取り、a
の値に基づいて問題に取り組む際の異なるアプローチです。これにより、2つのほとんど同じブロックではなく、1つのコードブロックしか持てません。これはサブルーチンにも当てはまります。
これはどのように実装することができますか?
ありがとうございます。
これはどのような方言ですか? – wallyk
Hmm ... '=>'はポインタ用のある種の代入演算子であり、 'procedure(func)'は手続きのためのある種の宣言であり、 'type(mytype)'は派生型のようです。私は 'null()'が初期化に使用されていると仮定しており、0に相当します。あなたは私がこれで初心者だと言うことができます。そして、はい、Fortranは私が正しく学んでいる最初のプログラミング言語です。 –
いくつか質問があります。 'インターフェース'とは何ですか?これはプロシージャを指定する方法(やはり派生型のように)であり、ポインタが指しているものが正しい "型"であることを保証する方法ですか?また、プログラムの最後の前に 'stop'があります。そのベストプラクティスですか、私も自分のコードに含める必要がありますか? –