根据元素类型写入数组元素

时间:2017-01-27 11:47:00

标签: fortran function-pointers overloading derived-types

我想要完成的事情最好用一个例子来解释。在Fortran中,我有一个类型float的数组a,它包含一个函数指针,一个整数变量和一个实数变量。

mixed

指针type mixed procedure(), pointer, nopass :: f_ptr integer :: vi real :: vr end type type(mixed), dimension(10) :: a 应该指向一个重载函数,该函数返回整数f_ptr或实数vi

vr

例如,

初始化数组
function f_i(i)
   implicit none
   integer, intent(in) :: i
   integer :: f_i
   f_i = a(i)%vi
   return
end function

function f_r(i)
   implicit none
   integer, intent(in) :: i
   real :: f_r
   f_r = a(i)%vr
   return
end function

在一个遍历可变数量元素的循环中,我想通过a(1)%vi = 2 a(1)%f_ptr => f_i a(2)%vr = 3.14 a(2)%f_ptr => f_r ... a(10)%vr = 42 a(10)%f_ptr => f_r 指向的函数将数组元素vivr写入未格式化的文件。

f_ptr

(可读形式)输出应为

n = 2
write(lununf) (a(j)%f_ptr, j=1,n)

我试图实现这个但是找不到解决方案。可以用某种方式完成吗?

0 个答案:

没有答案