声明功能
考虑该计划
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 在真正的旧代码示例中,即使结果具有显式类型,也会发现隐式类型化语句函数的伪参数并不罕见。