Fortran 2003 入門

ナビゲーション:前へ   上へ   次へ

2.6 オブジェクト結合手続き

オブジェクト結合手続きは手続きポインタ成分であり型結合手続きと似た動作をします。 ただし結合が型毎ではなくオブジェクト毎に行われる点が異なります。 手続きポインタ成分宣言の構文は次の通りです:

PROCEDURE( [proc-interface] ) , proc-component-attr-spec-list :: proc-decl-list

ここで
  • それぞれのproc-component-attr-specNOPASS, PASS, PASS(arg-name), POINTER, PRIVATE, PUBLICのうちのいずれかで、
  • それぞれのproc-decl は成分名にnullへのデフォルト初期化 (‘=> NULL()’、省略可)を続けたものです。
POINTER 属性は必須です。

オブジェクト結合手続きは型結合手続きと同様に渡されたオブジェクトの仮引数を持ちます。 もしこれを望まないのであれば NOPASS 属性の指定が必要となります (この指定は引用仕様が黙示的である場合(proc-interface が指定されていない場合や型指定の場合)には必須です)。

次は引数無しのサブルーチン並びを使用した例を示したものです。

  TYPE action_list
    PROCEDURE(),NOPASS,POINTER :: action => NULL()
    TYPE(action_list),POINTER :: next
  END TYPE
  TYPE(t),TARGET :: top
  TYPE(t),POINTER :: p
  EXTERNAL sub1,sub2
  top%action = sub1
  ALLOCATE(top%next)
  top%next%action = sub2
  ...
  p => top
  DO WHILE (ASSOCIATED(p))
    IF (ASSOCIATED(p%action)) CALL p%action
    p => p%next
  END DO



ナビゲーション:前へ   上へ   次へ
関連情報
ご案内
© 譌・譛ャ繝九Η繝シ繝。繝ェ繧ォ繝ォ繧「繝ォ繧エ繝ェ繧コ繝�繧コ繧ー繝ォ繝シ繝玲�ェ蠑丈シ夂、セ 2025
Privacy Policy  /  Trademarks