2008-10-21 33 views

cevap

22

Bu yalnızca bir Fortran 90 modülü ile çalışacaktır. Modül bildiriminde "public" ve "private" anahtar kelimeleri kullanarak değişkenler ve rutinler listesi için erişim limitleri belirtebilirsiniz. Genelde özel anahtar kelimeyi başlangıçta kullanmanın yararını görüyorum, bu da açık bir şekilde herkese açık olarak işaretlenmedikçe, modül içindeki her şeyin özel olduğunu belirtir.

Aşağıdaki kod örneğinde, subroutine_1() ve function_1() öğesine, gerekli "use" ifadesi aracılığıyla modülün dışından erişilebilir, ancak diğer değişken/alt yordam/işlevler özel olacaktır. dışından erişilebilir KAMU listelenen özel olarak sıralanan

PUBLIC :: subname-1, funname-2, ... 

PRIVATE :: subname-1, funname-2, ... 

Tüm varlıklar modülün dışarıdan erişilebilir olmayacak ve tüm varlıklar: Eğer modülleri kullanıyorsanız

module so_example 
    implicit none 

    private 

    public :: subroutine_1 
    public :: function_1 

contains 

    ! Implementation of subroutines and functions goes here 

end module so_example 
2

Hiç bir FORTRAN hattı yazmamıştım, ama this thread about "Private module procedures" topikal gibi görünüyor, en azından öyle umuyorum. En azından cevapları içerdiği görülüyor.


jaredor özeti:

kamu/özel nitelik Fortran 90 modüllerin içinde var ve sonradan. Fortran 77 ve öncesi - şansın yok.

+1

Anlaşılır derecede alçakgönüllülüğünüz kredi veriyor, ancak daha kesin olabilirsiniz: Cevap bu iş parçacığındadır. Kamu/özel nitelik Fortran 90 ve daha sonraki sürümlerde mevcut. Fortran 77 ve öncesi - şansın yok. – jaredor

1
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 
... 
2

, burada sözdizimi modül. Diğer tüm varlıkların, varsayılan olarak, modülün dışından erişilebilir.

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 
İlgili konular