将Fortran变量分配给模块实例中的变量

时间:2017-04-24 11:47:49

标签: module fortran

我想构建一个可以在Fortran 90中使用不同实例的哈希表模块(我不确定该怎么命名)。这就是我想要实现的目标:

module hashing

  implicit none

  private
    real, dimension(:), allocatable                  :: &
      real1
  public                                             :: &
    Hash, hash_init, hash_push, hash_set, hash_get,     &
    hash_print

  type Hash
    character (len=128)                              :: &
      data_type
    integer                                          :: &
      array_size
  end type Hash
  contains

    subroutine hash_init (this)
      type(Hash), intent (in)                        :: &
        this

      if (trim(this%dtype) == "real1) then
        call make_real1(this%array_size)
      end if
    end subroutine hash_init

    subroutine hash_print (this)
      type(Hash), intent (in)                        :: &
        this

      if (trim(this%dtype) == "real1) then
        print *, real1
      end if
    end subroutine hash_print
end module hashing

因此,在我的测试程序中,两个call hash_print语句都打印出一个大小为5的数组,因为real1数组是模块散列的一般实例,而不是(我想要实现的)打印第一个实例大小为10,第二个大小为5。

program test
  use hashing
  implicit none
  type(Hash)                                        :: &
      inst1, inst2


  inst1 = Hash("real1", 10)
  inst2 = Hash("real1", 5)
  call hash_init(inst1)
  call hash_init(inst2)

  call hash_print(inst1)
  call hash_print(inst2)

end program test

主要思想是添加整数和字符类型维度以及使用和扩展if语句,但我需要知道模块中我需要声明这些可分配维度的位置,以便它们绑定到特定实例只要。如果可能的话!我已经尝试在hash_init子例程中声明可分配数组,但是它不适用于hash_print子例程。

0 个答案:

没有答案