通过在fortran中添加来更新变量

Pea*_*ful 1 fortran

我正在使用FORTRAN 95.在代码中我需要通过向它们添加内容来更新许多变量.例如,如果x是我的变量,我可能需要做这样的事情:

x = x + 1
Run Code Online (Sandbox Code Playgroud)

问题是我的变量是数组元素并且具有大名称等,因此在上面的等式中重复x是一项繁琐的任务.例如在python中我们有+ =运算符来实现这一点.我们在FORTRAN中有类似的东西吗?

提前致谢

Ale*_*ogt 7

不,Fortran没有这个运营​​商.但是,您可以实现子例程来执行此操作:

elemental subroutine my_incr( var, incr )
  implicit none
  integer,intent(inout) :: var
  integer,intent(in)    :: incr

  var = var + incr
end subroutine
Run Code Online (Sandbox Code Playgroud)

然后你可以在你的代码中调用它:

! ...
call my_incr( x, 1 )
! ...
Run Code Online (Sandbox Code Playgroud)

由于elemental子例程的性质,您还可以在数组上执行此操作:

! ...
call my_incr( array(:), 1 )
! ...
Run Code Online (Sandbox Code Playgroud)

  • 我个人写`call my_incr(array,1)`而不是`call my_incr(array(:),1)`因为`array(:)`在技术上是一个数组切片而Fortran可以复制整个数组到切片并将该副本传递给子例程.如果整个数组未经过未传递,则不太可能发生这种情况. (5认同)