まず、回答はoptional
やpresent
のようなものではないと言いたいと思います。任意の数の引数でFortranサブルーチンを定義する方法は?
write(*,*) ...
のような関数を定義したいとします。わかるように、入力バリアントの数は任意です。 optional
キーワードを使用する場合は、すべての可能な入力を定義する必要があります。 1000(可能な)入力があると仮定して、何ができますか?
まず、回答はoptional
やpresent
のようなものではないと言いたいと思います。任意の数の引数でFortranサブルーチンを定義する方法は?
write(*,*) ...
のような関数を定義したいとします。わかるように、入力バリアントの数は任意です。 optional
キーワードを使用する場合は、すべての可能な入力を定義する必要があります。 1000(可能な)入力があると仮定して、何ができますか?
単純なサブルーチンまたはFortranの引数では何もできません。それは単に可能ではありません。関数で定義されている引数のみを使用できます。
すべての入力の型が同じであれば、配列にすべてを配置するか、さらに複雑な派生型を作成する必要があります(多形リンクリストなど)。
あなたが求めているのは、いくつかの言語(たとえばCの可変関数)に存在しますが、Fortranでは存在しません。
追加するだけで、Fortran言語ではユーザープロシージャーによって複製されます。あなたが求めているものに近いところでは、MIN関数とMAX関数は名前のついた任意の数の引数を持つことができますが、同様のものを書く方法はありません。 –
IMHO - 1つまたは2つのオプションのパラメータを増やすと、設計が不良になります。 uniform型のパラメータの場合、配列を使用することをお勧めします。例えば、addnode([1,2,3,4])のようにフライを作成した場合です。 – ja72