Синтаксис Фортрана для назначений - PullRequest
0 голосов
/ 13 июня 2018

Синтаксис Фортрана сводит меня с ума!Может кто-нибудь объяснить, как я могу вызвать назначение (я почти уверен, что это не правильная терминология ...).Я пытаюсь назначить тип в соответствии с типом значения .У меня есть следующее:

module test_module

   implicit none

   type :: mytype

      integer   :: i
      real      :: r
      logical   :: l

   contains

      generic :: assignment(=) => mytype_to_type
      procedure, pass(me) :: mytype_to_type

   end type mytype

contains

   subroutine mytype_to_type(t, me)

      implicit none

      class(*), intent(inout)   :: t
      class(mytype), intent(in) :: me

      !.. process based on input type
      select type (t)
         type is (integer)
            t = me%i
         type is (real)
            t = me%r
         type is (logical)
            t = me%l
         class default
            stop "none"
            return
      end select

   end subroutine mytype_to_type

end module test_module

program test

    use test_module

    implicit none

    type(mytype) :: t_type

    integer :: i = 1
    real    :: r = 1.
    logical :: l = .true.

    t_type = i                 !! how is this supposed to work?

    select type(t_type)

        type is (integer)
            write(*,*) "is int"
        type is (real)
            write(*,*) "is real"
        type is (logical)
            write(*,*) "is logical"
        class default
            return

    end select


end program test

Будет ли это вообще работать?Может ли кто-нибудь помочь мне с этим?

Спасибо!

...