Ada*_*yes 7 fortran function output
我想创建一个子程序,将函数作为输出返回.我怎样才能做到这一点?我会举一个例子,说明我认为它应该如何(我知道它写的很糟糕)
module fun_out
contains
subroutine exponential(F,a)
interface, intent(out)
function f(x)
real, intent(in)::x
real :: f(2)
end function
end interface
real,intent(in):: a
F=exp(a*x)
end subroutine exponential
end module
Run Code Online (Sandbox Code Playgroud)
有了这个,我应该从输出中的指数族中获取一个函数.
您必须返回一个函数指针。这可以在 Fortran 2003 中完成。
procedure(name_of_interface), pointer :: f
Run Code Online (Sandbox Code Playgroud)
然而,您不能期望完整的词法范围闭包,而只是纯指针。
您必须将程序准备为正常的外部程序、模块或 F2008 甚至内部程序(有一些限制),然后指向它:
f => my_function
Run Code Online (Sandbox Code Playgroud)
在您的情况下,您有 argument a,并且您似乎想将其用作捕获的闭包变量。这在 Fortran 语言中是不可能的。您要么必须每次都将其传递给函数,要么使用 Functor 模式(保存捕获的参数的派生类型),或者使用内部过程(但这仅在其宿主过程内部有效)。
| 归档时间: |
|
| 查看次数: |
336 次 |
| 最近记录: |