Мне было интересно, возможно ли каким-то образом определить производный тип в Fortran, который автоматически возвращает правильный тип, без специального вызова типа, например. var%real
? Вот пример, чтобы объяснить, что я имею в виду:
module DervType
implicit none
type, public :: mytype
real(8) :: r
integer :: i
logical :: l
end type
end module DervType
program TestType
use DervType
implicit none
type(mytype) :: test
test = 1. !! <-- I don't want to use test%r here
end program TestType
Возможно ли это, определив какое-то назначение интерфейса (перегрузите =) или что-то в этом роде? Это вообще возможно?
Спасибо! Любая помощь приветствуется!
test = x
можно сделать так, чтобы компонент множестваtest
каким-то образом определялся типомx
. Однако это ли вы имеете в виду? Часть, которая автоматически возвращает правильный тип, предполагает, что вам может понадобиться сделать что-то более экзотическое (например,call sub(test)
действует какcall sub(test%r)
, если аргумент реален и т. д.). - person francescalus   schedule 26.09.2018Error: Can't convert REAL(4) to TYPE(mytype)
, так что это не работает. Извините, я посмотрел пример по вашей ссылке, но я не понимаю его. Мне нужен интерфейс, верно? - person Florian Ragossnig   schedule 26.09.2018Error: Can't convert REAL(4) to TYPE(mytype)
касается внутреннего назначения. Вам нужно будет настроить определенное назначение, как описано в других вопросах. Этот может помочь. - person francescalus   schedule 26.09.2018x = test
работало, где x — вещественное число, а фактическая операция будетx = test%r
? Я не думаю, что это возможно, но это приходит на ум при чтении вашего вопроса. - person Pierre de Buyl   schedule 27.09.2018