Я хочу читать числа из текстового файла. Это могут быть скаляры или массивы.Перегрузка скалярами и массивами
Так как я называю
real, dimension(2) :: test
call self%ReadRealToVariable('(2F10.0)',test)
или
real :: test
call self%ReadRealToVariable('(F10.0)',test)
Функция импорта выглядит
subroutine ReadRealToVariable(self,Format,VarOut)
implicit none
! Declaring Part
class(FileImporter) :: self
real, dimension(:), intent(out) :: VarOut
character(len=*), intent(in) :: Format
real, dimension(size(VarOut)) :: Value
! Executing Part
call self%ReadValueToVariable(Format,Value)
end subroutine ReadRealToVariable
Проблема теперь что когда я пытаюсь импортировать скаляр, я получаю несоответствие размеров между скаляром и рангами (1). Я полностью понимаю, почему эта проблема возникает. Теперь вопрос в том, как с этим справиться:
Есть ли способ гибко распределить переменную как для скаляра, так и для массива?
Или я должен просто инициализировать все скаляры как
real, dimension(1) :: test
?
Большое спасибо! – THo
Только на стороне комментирования: когда я увидел перегрузку, я ожидал увидеть перегрузку функций, где вы пишете две версии своей функции: одну для скаляра и одну для массива, а также общее имя интерфейса или общую связанную процедуру для обоих , который должен работать отлично. – innoSPG
Я сделал это так. Мое намерение состояло в том, чтобы в модуле не было большого фрагмента кода два раза, но я думаю, что это путь. – THo