有没有办法在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,等等。
答案 0 :(得分:1)
不是我所知道的,因为(2,2)形状也会匹配(:,:)形状。
我能推荐的最好的方法是只有NxN功能,如果遇到2x2数组,则将其传递给特殊功能。
然后,作为输出,将其放入size(1)数组中。