声明功能

考虑该计划

implicit none
integer f, i
f(i)=i

print *, f(1)
end

这里 f 是一个声明函数。它具有整数结果类型,采用一个整数伪参数。 1

这样的语句函数存在于定义它的范围内。特别是,它可以访问该范围内可访问的变量和命名常量。

但是,语句函数受到许多限制并且可能令人困惑(看起来像数组元素赋值语句一样偶然。) 重要的限制是:

  • 函数结果和伪参数必须是标量
  • 伪参数与函数在同一范围内
  • 语句函数没有局部变量
  • 语句函数不能作为实际参数传递

语句功能的主要优点由内部函数重复

implicit none

print *, f(1)

contains

  integer function f(i)
    integer i
    f = i
  end function

end

内部函数不受上述限制的约束,尽管值得注意的是内部子程序可能不包含其他内部子程序(但它可能包含语句功能)。

内部函数有自己的范围,但也有可用的主机关联。

1 在真正的旧代码示例中,即使结果具有显式类型,也会发现隐式类型化语句函数的伪参数并不罕见。