我有一个Fortran 90子程序,它将一个函数作为参数,我想将该函数的修改版本传递给另一个子例程。我想程序看起来是这样的:从另一个函数创建动态函数
subroutine foo(f, ...)
real :: pt(2), dir(2)
interface
function f(x) result(y)
real, intent(in) :: x(2)
real :: y
end function f
end interface
pt = ...
dir = ...
!! Somehow create g(x) = f(pt + x*dir)
call bar(g)
end subroutine foo
subroutine bar(g)
interface
function g(x) result(y)
real, intent(in) :: x
real :: y
end function g
end interface
!! Do stuff with g
end subroutine bar
我已经设法做类似的'g'只需要使用正常变量,而不是一个函数。在这种情况下,我使用全局变量将其作为全局函数,并将其分配给'foo'中的全局变量。但是,我找不到一种方法将'f'全局化,或将其分配给全局函数。
任何人有任何想法如何做到这一点?解决方案可以像你想要的那样简单。
感谢您的例子,但将它在Fortran 90的工作?你使用的很多关键词对我来说都是新的;特别是我只能在2003年找到'程序'的引用而不是90。 – 2012-03-14 19:06:41