2017-06-06 5 views
0

ぼんやりした配列を作ることについては、this postを見ました。漠然とした配列でアクセスする構文ですか?

私がこの配列にアクセスするまでは、すべてがうまくいくと思っています。

type :: vector 
    integer, dimension(:), allocatable :: elements 
end type vector 
type :: ragged_array 
    type(vector), dimension(:), allocatable :: vectors 
end type ragged_array 
type(ragged_array) :: ragarr 
allocate(ragarr%vectors(1)%elements(3)) 
allocate(ragarr%vectors(2)%elements(4)) 
!PROBLEM HERE : 
raggar(1,1:3)=0 
raggar(2,1:4)=1 

それは私にエラーを与える:

The assigment operation or the binary expression operation is invalid for the data type of two operands 

をそれは私が特定の値にアクセスできますどのようにこのぼろぼろの配列を、操作する方法を私のため、まだ不明だ...任意の助けに感謝を!

答えて

2

あなたのコードは、多くのエラーが含まれています

  1. をあなたは前に、そのコンポーネントraggar%ベクトル%の要素を割り当てるraggar%ベクトルを割り当てる必要があります。
  2. raggarは割付け配列が含まれており、それが配列でない割付け配列が含まれているスカラーで、あなたはその要素にアクセスしたい場合にのみ%ベクトル(I)%要素(J)

をraggar使用することができます訂正されたコード:

type :: vector 
    integer, dimension(:), allocatable :: elements 
end type vector 

type :: ragged_array 
    type(vector), dimension(:), allocatable :: vectors 
end type ragged_array 

type(ragged_array) :: ragarr 

allocate(raggar%vectors(2)) 
allocate(ragarr%vectors(1)%elements(3)) 
allocate(ragarr%vectors(2)%elements(4)) 

!PROBLEM HERE : 
raggar%vectors(1)%elements=0 !raggar(1,1:3)=0 
raggar%vectors(2)%elements=0 !raggar(2,1:4)=1 
+0

そして、 'raggar'全体をサブルーチンの引数に渡す方法はありますか? 'raggar%vectors%elements'を実行するとうまくいかないようです.... – Dadep

関連する問題