Dostęp do elementów zwróconej tablicy w Fortran
Jak uzyskać dostęp do elementu tablicy zwracanego z funkcji? Na przykład,shape()
zwraca tablicę liczb całkowitych. Jak porównać element tej tablicy do liczby całkowitej? Poniższe informacje nie są kompilowane:
integer :: a
integer, dimension(5) :: b
a = 5
if (a .eq. shape(b)) then
print *, 'equal'
end if
Błąd jest:
if (a .eq. shape(c)) then
1
Error: IF clause at (1) requires a scalar LOGICAL expression
Rozumiem, że to dlatego, żeshape(c)
zwraca tablicę. Jednak dostęp do elementu tablicy nie wydaje się możliwy w ten sposób:shape(c)(1)
Teraz, jeśli dodam te dwie linie:
integer, dimension(1) :: c
c = shape(b)
... i zmieńif
klauzula do tego:
if (a .eq. c(1)) then
... to działa. Ale czy naprawdę muszę zadeklarować dodatkową zmienną tablicową, aby pomieścić zwracaną wartośćshape()
, czy jest jakiś inny sposób na to?