Вопрос

Как мне объявить приватную функцию в Фортране?

Это было полезно?

Решение

Это будет работать только с модулем 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
...
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top