Fortran 多维派生类型的数组组件上的求和(不带do循环)?
我有一个派生类型数组,其中派生类型也可以是数组。有没有办法不借助do循环就对元素求和Fortran 多维派生类型的数组组件上的求和(不带do循环)?,fortran,Fortran,我有一个派生类型数组,其中派生类型也可以是数组。有没有办法不借助do循环就对元素求和 program main type t_couple real :: income(2) = 5 end type t_couple type(t_couple) :: couple(2) print *, " sum 1 ", sum(couple(1)%income) ! works fine print *, " sum 2 ", sum(couple%i
program main
type t_couple
real :: income(2) = 5
end type t_couple
type(t_couple) :: couple(2)
print *, " sum 1 ", sum(couple(1)%income) ! works fine
print *, " sum 2 ", sum(couple%income) ! doesn't work
end program main
%F90-E-错误,如果包含结构是数组,则组件不能是数组
当然,我们都多次看到此错误消息,可以编写do循环来解决此问题,但我想知道是否有更简单、更简洁的方法?您可以使用隐式循环:
print *, " sum 2 ", sum( [( couple(i)%income, i=1,size(couple))] )
好吧,在一条线上做+1,但它仍然是一个循环。。。但如果没有一个循环,可能是没有办法做到的。@JohnE,至少我不知道还有其他方法。。。