更正fortran函数语法



我对fortran中函数的各种语法感到困惑。

 function func(i) result(j)
...
end function fun

这里是的第二个例子

 real function func (x)
...
end function func

这是的第三个例子

  real function func (x)
    ...
    return
    end function func

根据现代fortran标准,哪种语法是合适的?在第二个和第三个例子中,如果我在real类型的程序中声明多个变量,编译器如何知道返回哪个变量?

根据具体情况,您的所有示例都是合适的。这可以归结为风格偏好。

如果开头的函数语句没有RESULT说明符,则在函数体内部,函数结果与函数同名。

您可以在开场函数语句中使用RESULT说明符,就像在第一个示例中一样,将函数结果的名称更改为其他名称。

您可能希望这样做,因为您更喜欢使用函数名称以外的函数结果名称。如果您真的想递归调用函数,那么您可能需要这样做。

你可以在开场白中指定函数的类型(根据你的第二个或第三个例子),也可以在函数本身的规范部分(在正文中)指定函数类型(这可能是你的第一个例子中发生的事情,隐式键入除外)。函数结果的属性必须在函数体中指定,因此出于风格的考虑,有些人更喜欢将所有内容放在函数体内(这也避免了与范围和定义顺序相关的一些模糊的复杂性)。永远不要使用隐式键入。

最后一个例子只是在函数的可执行部分末尾有一个显式的返回语句。这是多余的——当执行到函数的可执行部分结束时,函数会自动返回。有些人更喜欢显式的return,也许是因为他们根深蒂固地担心编译器可能会突然忘记自动返回,另一些人则认为这是荒谬的愚蠢行为。

重复-如果打开函数语句中没有result子句,则函数结果的名称为函数名称,否则为result子句中的名称。

最新更新