在Fortran中,可以對數組進行操作,但是如何將派生類型的索引也作爲數組的一部分來處理呢?代碼會解釋我想要做的最好的:以數組形式傳遞派生類型
type mytype
integer :: b(3,3)
real :: c(4)
endtype
integer :: a(3,3)
real :: d(2,4)
type(mytype) :: mat(2)
!do stuff so that 'mat' gets values
....
!usually one does this
a = matmul(mat(1)%b, transpose(mat(2)%b))
!multiplying two 3x3 matrices
!but how does one do this? Note the "array"
d = matmul(mat(:)%c, mat(:)%c)
我認爲最後一行是類似於一個2x4的矩陣被乘以本身。但是,當我嘗試編譯時,gfortran抱怨
Error: Two or more part references with nonzero rank must not be specified
Fortran中可以這樣做嗎?
這看起來完全髒 – steabert 2012-01-11 09:38:18
的Fortran程序員必須做好準備,找到類似的事情在傳統的代碼:)。儘管如此,前兩個消息更重要,仍然適用。代碼只是爲了好玩。 – 2012-01-11 09:42:53
感謝您指出錯誤。我修復了它們。但問題的核心仍然是一樣的。 – 2012-01-11 10:23:57