返回多个值的函数

9
在Fortran中,是否可以像下面一样定义返回多个值的函数?
[a, b] = myfunc(x, y)

它可以返回多个值(见下文),但是您不能像Python一样在单行中进行多个赋值。 - Raul Laasner
2个回答

11

那得看情况…当涉及到函数时,不可能有两个不同的函数结果。但是,你可以从函数中返回一个长度为两个的数组。

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

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

如果您需要将两个返回值分别赋值给两个不同的变量,请使用子例程代替:

  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

谢谢你,Alexander。你的回答正是我一直在寻找的! - Harutaka Kawamura
@francescalus 谢谢你告诉我这件事! - Harutaka Kawamura

0
一个可能的方法是,如果你真的想要一个单一的输出变量,那么你可以将相同数据类型的所有输出组合成一个数组并返回它,尽管这不如上面讨论的方法好。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接