2012-01-29 3 views
2

Короче, я могу сделать что-то подобное в Fortran (любой из Фортрана стандартов)Индексация пользователем типы в Фортран

type(my_array), dimension(:,:), allocatable :: a 
type(my_array), dimension(5,5) :: b 
allocate(a(3, 3)) 
a = b(1:3, 1:3) 
+1

euhm, почему вы просто не попробовали? – steabert

+0

В итоге я задал неправильный вопрос :) Я понял, что после того, как увидел ответ. Поэтому я просто принял данный ответ. –

ответ

5

Да, конечно, вы можете (в F90 +).

$ cat foo.f90 
program foo 
implicit none 

type :: my_array 
    integer :: i 
end type my_array 

type(my_array), dimension(:,:), allocatable :: a 
type(my_array), dimension(5,5) :: b 
integer :: i, j 

do i = 1, 5 
    do j = 1, 5 
    b(j,i)%i = 10*i + j 
    end do 
end do 

allocate(a(3, 3)) 
a = b(1:3, 1:3) 

write(*,"(3i3)") a 

end program foo 
$ gfortran foo.f90 -o foo 
$ ./foo 
11 12 13 
21 22 23 
31 32 33 
$ 
Смежные вопросы