Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Fortran 多维派生类型的数组组件上的求和(不带do循环)?_Fortran - Fatal编程技术网

Fortran 多维派生类型的数组组件上的求和(不带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

我有一个派生类型数组,其中派生类型也可以是数组。有没有办法不借助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-错误,如果包含结构是数组,则组件不能是数组


当然,我们都多次看到此错误消息,可以编写do循环来解决此问题,但我想知道是否有更简单、更简洁的方法?

您可以使用隐式循环:

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

好吧,在一条线上做+1,但它仍然是一个循环。。。但如果没有一个循环,可能是没有办法做到的。@JohnE,至少我不知道还有其他方法。。。