मैं फोरट्रान में निजी फ़ंक्शन कैसे घोषित करूं?फोरट्रान में निजी फ़ंक्शन
उत्तर
यह केवल एक फोरट्रान 90 मॉड्यूल के साथ काम करेंगे। आपके मॉड्यूल घोषणा में, आप "सार्वजनिक" और "निजी" कीवर्ड का उपयोग करके चर और दिनचर्या की सूची के लिए पहुंच सीमा निर्दिष्ट कर सकते हैं। मुझे आमतौर पर निजी कीवर्ड का उपयोग शुरू में उपयोगी होता है, जो निर्दिष्ट करता है कि मॉड्यूल के भीतर सब कुछ निजी रूप से चिह्नित किए जाने तक निजी है।
नीचे दिए गए कोड नमूने में, subroutine_1() और function_1() आवश्यक "उपयोग" कथन के माध्यम से मॉड्यूल के बाहर से सुलभ हैं, लेकिन कोई अन्य चर/subroutine/function निजी होगा।
PUBLIC :: subname-1, funname-2, ...
PRIVATE :: subname-1, funname-2, ...
सभी निजी संस्थाओं में सूचीबद्ध मॉड्यूल के बाहर से सुलभ नहीं होगा और सभी संस्थाओं सार्वजनिक रूप से सूचीबद्ध के बाहर से पहुँचा जा सकता है:
module so_example
implicit none
private
public :: subroutine_1
public :: function_1
contains
! Implementation of subroutines and functions goes here
end module so_example
मैंने कभी फोरट्रान की एक पंक्ति नहीं लिखी है, लेकिन this thread about "Private module procedures" सामयिक प्रतीत होता है, कम से कम मुझे उम्मीद है। कम से कम उत्तर रखने लगता है।
jaredor सारांश:
सार्वजनिक/निजी विशेषता फोरट्रान 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
...
आप मॉड्यूल का उपयोग करते हैं, यहां वाक्य रचना है मॉड्यूल डिफ़ॉल्ट रूप से अन्य सभी संस्थाओं को मॉड्यूल के बाहर से एक्सेस किया जा सकता है।
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
आपकी समझदार विनम्रता आप क्रेडिट करते हैं, लेकिन आप अधिक निश्चित हो सकते हैं: उत्तर उस धागे में है। सार्वजनिक/निजी विशेषता फोरट्रान 9 0 और बाद में मॉड्यूल के भीतर मौजूद है। फोरट्रान 77 और इससे पहले - आप भाग्य से बाहर हैं। – jaredor