0
我如何將派生數據類型的字段作爲輸入傳遞給子例程?Fortran類型字段作爲子例程中的輸入
我有一個鏈接列表,我想循環低谷,我只想在特定字段上工作,但我想將字段「名稱」作爲輸入,以便我可以在不同的字段上調用相同的函數的名單。
例如:
program main
implicit none
! ----- variables declaration
type :: element
real :: u1
real :: u2
type (element), pointer :: next => null()
end type element
type (element), pointer :: first, last, iele
! ----- code
allocate(first)
last => first
first %u1 = 0
first %u2 = 0
allocate(first %next)
last => first %next
last %u1 = 10
last %u2 = 20
call addten(u1, first)
call addten(u2, first)
iele => first
do while (associated(iele))
write(*,*) iele %u1
iele => iele %next
end do
end program main
! =====
subroutine addten(u, first)
implicit none
! ----- variables declaration
type :: element
real :: u1
real :: u2
type (element), pointer :: next => null()
end type element
real, pointer :: u
type (element), pointer :: iele
! ----- code
iele => first
do while (associated(iele))
iele %u = iele %u + 10
iele => iele %next
end do
end subroutine addten
好點關於他的模塊,我的是一個馬虎的例子。 我想避免交換機或任何選擇,因爲我不想基本上覆制大塊代碼。 +10操作是一行,而對於我的真實代碼,它將是幾行。 – 2014-11-07 03:09:17
@GiacomoCastiglioni我沒有意識到其他可能性。 – 2014-11-07 07:09:16