Fortran语句函数的使用

Fortran语句函数的使用,fortran,fortran90,Fortran,Fortran90,我阅读了有关语句函数的内容,例如: C(F) = 5.0*(F - 32.0)/9.0 这不就是: C = 5.0*(F - 32.0)/9.0 i、 没有功能部分,或者我遗漏了什么 如果它们不一样,我什么时候需要使用语句函数 C = 5.0*(F - 32.0)/9.0 它只是一个赋值给变量C,它可以在任何地方,并且每次程序流到达它时都会计算一次 C(F) = 5.0*(F - 32.0)/9.0 是一个语句函数,可以在范围内的任何时间对其进行求值,例如,C(100),它返回大约37.

我阅读了有关语句函数的内容,例如:

C(F) = 5.0*(F - 32.0)/9.0
这不就是:

C = 5.0*(F - 32.0)/9.0
i、 没有功能部分,或者我遗漏了什么

如果它们不一样,我什么时候需要使用语句函数

C = 5.0*(F - 32.0)/9.0
它只是一个赋值给变量
C
,它可以在任何地方,并且每次程序流到达它时都会计算一次

C(F) = 5.0*(F - 32.0)/9.0
是一个语句函数,可以在范围内的任何时间对其进行求值,例如,
C(100)
,它返回大约
37.8

从一些代码

  xx(i) = dx*i

  f(a) = a*a

  do i = 1, nx
     x = xx(i)
     print *, f(x)
  end do
print语句中的
f(x)
将使用
x
的每个新值进行计算,并生成一个新值。
x
的值也是前一行语句函数
xx
计算的结果


但是现在(在Fortran 95中)声明语句函数已经过时。更好地在任何新代码中使用内部函数。例如:

program p
  implicit none
  !declarations of variables x, i, nx, dx

  do i = 1, nx
     x = xx(i)
     print *, f(x)
  end do
contains

  real function xx(i)
    integer, intent(in) :: i
    xx = dx*i
  end function

  real function f(a)
    real, intent(in) :: a
    f = a*a
  end function
end program

“但是现在声明语句函数已经过时了”,这就是我所需要的,我想知道为什么它们已经过时了。这似乎是一个很有用的语言特性。声明很混乱,并且在范围中引入了不必要的变量。内部功能更加通用。真正有用的是现代的lambda表达式和闭包,但不是这个。