Доступ к элементам возвращаемого массива в Фортране
Как получить доступ к элементу массива, который возвращается из функции? Например,shape()
возвращает массив целых чисел Как сравнить элемент этого массива с целым числом? Следующее не компилируется:
integer :: a
integer, dimension(5) :: b
a = 5
if (a .eq. shape(b)) then
print *, 'equal'
end if
Ошибка:
if (a .eq. shape(c)) then
1
Error: IF clause at (1) requires a scalar LOGICAL expression
Я понимаю, что это потому, чтоshape(c)
возвращает массив. Однако доступ к элементу массива не представляется возможным, например, так:shape(c)(1)
Теперь, если я добавлю эти две строки:
integer, dimension(1) :: c
c = shape(b)
... и изменитьif
пункт к этому:
if (a .eq. c(1)) then
... тогда это работает. Но действительно ли я должен объявить дополнительную переменную массива для хранения возвращаемого значенияshape()
или есть другой способ сделать это?