我读了一下语句函数,例如:
C(F) = 5.0*(F - 32.0)/9.0
Run Code Online (Sandbox Code Playgroud)
这不是:
C = 5.0*(F - 32.0)/9.0
Run Code Online (Sandbox Code Playgroud)
即没有功能部分,或者我可能缺少某些东西?
如果它们不相同,我什么时候需要使用语句功能?
C = 5.0*(F - 32.0)/9.0
Run Code Online (Sandbox Code Playgroud)
只是赋值给变量C
,它可以在任何地方,每次程序流到达时都会被评估一次.
C(F) = 5.0*(F - 32.0)/9.0
Run Code Online (Sandbox Code Playgroud)
是一个语句函数,并且可以在它在范围内的任何时候进行评估,例如,C(100)
返回大约37.8
.
从一些代码
xx(i) = dx*i
f(a) = a*a
do i = 1, nx
x = xx(i)
print *, f(x)
end do
Run Code Online (Sandbox Code Playgroud)
在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
Run Code Online (Sandbox Code Playgroud)