returns 多个值的函数

Function which returns multiple values

在 Fortran 中,是否可以定义一个 returns 多个值的函数,如下所示?

[a, b] = myfunc(x, y)

这取决于...使用 functions,不可能有两个不同的函数结果。但是,您可以从函数中得到一个长度为 return 的数组。

  function myfunc(x, y)
    implicit none
    integer, intent(in) :: x,y
    integer             :: myfunc(2)

    myfunc = [ 2*x, 3*y ]
  end function

如果您需要两个 return 值到两个不同的变量,请改用 subroutine

  subroutine myfunc(x, y, a, b)
    implicit none
    integer, intent(in) :: x,y
    integer, intent(out):: a,b

    a = 2*x
    b = 3*y
  end subroutine

一种可能的方法是,如果你真的想要一个单一的输出变量,那么你可以将所有相同数据类型的输出组合在一个数组中,然后return它,虽然这并不比上面讨论的方法。