对多维派生类型的数组组件求和(没有do循环)?

时间:2016-04-25 18:45:03

标签: 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%income)     ! doesn't work

end program main
  

%F90-E-ERROR,如果包含结构是数组,则组件不能是数组。

当然我们都多次看过这个错误信息并且可以编写一个do循环来解决这个问题,但我想知道是否有更简单,更简洁的方法?

1 个答案:

答案 0 :(得分:1)

您可以使用隐式循环:

print *, " sum 2 ", sum( [( couple(i)%income, i=1,size(couple))] )