Вопрос
Как мне объявить приватную функцию в Фортране?
Решение
Это будет работать только с модулем Fortran 90. В объявлении вашего модуля вы можете указать ограничения доступа для списка переменных и подпрограмм, используя " public " и "частный" ключевые слова. Обычно я нахожу полезным сначала использовать ключевое слово private само по себе, что указывает на то, что все в модуле является приватным, если явно не отмечено public.
В приведенном ниже примере кода функции subroutine_1 () и function_1 () доступны из-за пределов модуля через обязательное " use " оператор, но любая другая переменная / подпрограмма / функция будет закрытой.
module so_example
implicit none
private
public :: subroutine_1
public :: function_1
contains
! Implementation of subroutines and functions goes here
end module so_example
Другие советы
Если вы используете модули, вот синтаксис:
PUBLIC :: subname-1, funname-2, ...
PRIVATE :: subname-1, funname-2, ...
Все объекты, перечисленные в PRIVATE, не будут доступны извне модуля, а все объекты, перечисленные в PUBLIC, могут быть доступны извне модуля. Все остальные объекты по умолчанию доступны из-за пределов модуля. Р>
MODULE Field
IMPLICIT NONE
Integer :: Dimen
PUBLIC :: Gravity
PRIVATE :: Electric, Magnetic
CONTAINS
INTEGER FUNCTION Gravity()
..........
END FUNCTION Gravity
REAL FUNCTION Electric()
..........
END FUNCTION
REAL FUNCTION Magnetic()
..........
END FUNCTION
..........
END MODULE Field
Я никогда не писал строки на Фортране, но эта тема о" процедурах закрытого модуля " представляется актуальной, по крайней мере, я на это надеюсь. Кажется, по крайней мере, содержит ответы.
<Ч>Джаредор Сводка.
Атрибут public / private существует в модулях в Fortran 90 и более поздних версиях. Фортран 77 и ранее - вам не повезло.
Private xxx, yyy, zzz
real function xxx (v)
...
end function xxx
integer function yyy()
...
end function yyy
subroutine zzz ( a,b,c )
...
end subroutine zzz
...
other stuff that calls them
...