[英]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.