如何定义具有任意数量参数的Fortran子例程?

hen*_* li 3 fortran

首先,我想说的答案不是关于optional或类似的东西present.

我想定义一个看起来像的函数write(*,*) ....如我们所见,输入变体的数量可以是任意的.如果我们使用optional关键字,我们需要定义所有可能的输入.假设我们有1000个(可能的)输入,我们可以做什么?

Vla*_*r F 7

你不能用简单的子程序或Fortran参数做任何事情.这根本不可能.您只能使用函数中定义的参数.

如果所有输入的类型相同,则必须将所有内容放入数组中,否则您将不得不创建一些更复杂的派生类型 - 可能是多态链接列表或类似内容.

请注意,您要求的内容确实存在于某些语言中(例如,C可变参数函数),但它在Fortran中不存在.

  • 只是添加 - Fortran语言中有些东西无法通过用户程序复制.更接近你所要求的,MIN和MAX函数可以有任意数量的参数,每个参数都有名称,但你没有办法写类似的东西. (2认同)