繁体   English   中英

Fortran函数重载

[英]Fortran Function Overloading

有没有一种方法可以在Fortran中执行以下操作,而不必为每个维度数组都明确执行此操作?

Module OverloadTest
  interface arrayStuff
    module procedure :: arrayStuff_NxN, arrayStuff_2x2
  end interface

  contains

  function arrayStuff_NxN(A) result(output)

    real*8,dimension(:,:) :: A
    real*8, dimension(size(A,1), size(A,2)-1) :: output

    !code and stuff to populate output

  end function arrayStuff_NxN

  function arrayStuff_2x2(A) result(output)

    real*8,dimension(:,:) :: A
    real*8 :: output

    !code and stuff to populate output

  end function arrayStuff_2x2
End Module OverloadTest

为了明确起见,我希望能够调用arrayStuff函数,如果它是2x2数组,我希望它选择2x2,对于所有其他大小,选择NxN,而不必专门为3x3、4x4、5x5创建函数,等。

我不知道,因为(2,2)形状也将与(:,:)形状匹配。

我所建议的最好方法是仅具有NxN函数,如果遇到2x2数组,请将其传递给特殊函数。

然后,作为输出,将其放入size(1)数组中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM