我想要完成的事情最好用一个例子来解释。在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
指向的函数将数组元素vi
或vr
写入未格式化的文件。
f_ptr
(可读形式)输出应为
n = 2
write(lununf) (a(j)%f_ptr, j=1,n)
我试图实现这个但是找不到解决方案。可以用某种方式完成吗?