ros*_*lho 6 fortran function optional-parameters
我可以使用带有intent(in)和的子程序的Fortran可选intent(inout)参数,但是函数可选参数只能用于intent(in),对吗?随着intent(inout)我得到了下面的代码段错误:
real function foo(x, tol)
real, intent(in) :: x
real, optional, intent(inout) :: tol
if( .not. present(tol) ) tol = 1e-6
!...
end function foo
Run Code Online (Sandbox Code Playgroud)
我发现了问题,即使没有出现在第四行(在中tol = 1e-6),我也使用了变量:
real function foo(x, tol)
real, intent(in) :: x
real, optional, intent(inout) :: tol
if( .not. present(tol) ) tol = 1e-6
!...
end function foo
Run Code Online (Sandbox Code Playgroud)
但是,即使在不存在的情况下,我也想使用它并设置默认值,例如在C ++中,我们要做类似的事情
double foo(double x, double tol=1e-6)
Run Code Online (Sandbox Code Playgroud)
不幸的是,似乎在Fortran中是不可能的。