我了解关于语句函数的知识,例如以下示例:
C(F) = 5.0*(F - 32.0)/9.0
这不就相当于:
C = 5.0*(F - 32.0)/9.0
也就是说,没有函数部分,或者我漏掉了什么?
如果它们不相同,那么我什么时候需要使用语句函数?
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
在打印语句中,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