ナビゲーション:前へ 上へ 次へ
ナビゲーション:前へ 上へ 次へ
4.3 PROTECTED属性
PROTECTED 属性は PROTECTED 文もしくは型宣言文内の PROTECTED キーワードにより指定可能です。 PROTECTED属性はモジュール変数がモジュール外から変更されることのないように保護します。4.3.1 構文
PROTECTED文の構文は以下の通りです:PROTECTED [ :: ] name [ , name ] ...
PROTECTED属性はモジュール内の変数についてのみ指定可能です。
4.3.2 セマンティクス
PROTECTED属性を持った変数はその変数が定義されるモジュール内でのみ変更可能です。 該当モジュール外においては、INTENT(IN) 仮引数の場合と同様、 変数定義の文脈中(例えば代入文の左辺など)では使用することができません。これによりモジュール作成者は一部の変数を外部に公開しながらも、その値の変更を許さないといった運用が可能になります。
4.3.3 用例
MODULE temperature_module REAL,PROTECTED :: temperature_c = 0, temperature_f = 32 CONTAINS SUBROUTINE set_temperature_c(new_value_c) REAL,INTENT(IN) :: new_value_c temperature_c = new_value_c temperature_f = temperature_c*(9.0/5.0) + 32 END SUBROUTINE SUBROUTINE set_temperature_f(new_value_f) REAL,INTENT(IN) :: new_value_f temperature_f = new_value_f temperature_c = (temperature_f - 32)*(5.0/9.0) END SUBROUTINE ENDPROTECTED属性はtemperature_moduleの利用者にtemperature(温度)を 摂氏もしくは華氏で読みだすことを許しますが、変数の変更は提供されているサブルー チンを介してのみ可能です。これによって摂氏と華氏の値の整合性が保証されています。
ナビゲーション:前へ 上へ 次へ