سؤال

وكيف أعلن وظيفة خاصة في فورتران؟

هل كانت مفيدة؟

المحلول

وهذا سوف يعمل فقط مع 90 وحدة فورتران. في إعلان الوحدة النمطية الخاص بك، يمكنك تحديد حدود الوصول للحصول على قائمة من المتغيرات والروتينية باستخدام "العامة" وكلمات "خاصة". وعادة ما أجد أنه من المفيد استخدام الكلمة في حد ذاته خاصة في البداية، والتي تنص على أن كل ما في وحدة والخاص ما لم يشر صراحة الجمهور.

في نموذج التعليمات البرمجية أدناه، subroutine_1 () وfunction_1 () يمكن الوصول إليها من خارج وحدة عن طريق شرطا "استخدام" بيان، ولكن أي متغير / روتين / وظيفة أخرى تكون خاصة.

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

ولقد كتبت أبدا خط FORTRAN، ولكن <لأ href = "http://coding.derkeiler.com/Archive/Fortran/comp.lang.fortran/2004-01/1100.html" يختلط = " نوفولو noreferrer "> هذا موضوع حول" إجراءات وحدة خاصة " يبدو أن موضعي، على الأقل آمل ذلك. يبدو لاحتواء إجابات، على الأقل.


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
...
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top