他の言語では、静的メソッドは静的メンバーにアクセスでき、その可視性はクラススコープによって制限されます。 Fortranでは、静的メンバーはありません(私が間違っている場合は私を修正してください)。メソッド名はグローバルにアクセスできるので、異なるクラスに同じ名前の静的メソッドを2つ持つことさえできません。私は "ノパス"メソッドを "静的"と考えていますが、その用語が適用可能かどうかはわかりません。上記を踏まえて、単なるモジュール関数との違いはありません。プレーン関数に比べてnopass-methodsを使う利点はありますか?プロシージャnopassとfortranのプレーン関数
編集:
異なるクラスに同じ名前を持つ2つの静的メソッド持つことができないことの実例:
明らかmodule test_mod
type type1
contains
procedure, nopass :: proc => proc1
end type
type type2
contains
procedure, nopass :: proc => proc2
end type
contains
subroutine proc1()
print *, 'proc1'
end subroutine
subroutine proc2()
print *, 'proc2'
end subroutine
end module
を、私はちょうど今call proc()
を言うことができない、また私は使用することができますコンパイラが適切な方法を選ぶのを助けるクラス名。
あなたは何を意味するか、プロシージャ名と同じものではないこと、しかし、注意すべきです「異なるクラスに同じ名前の2つの静的メソッドを持つことさえできないのですか? – francescalus
@francescalus私は自分の質問を更新しました – DartLenin
どのような場合でも 'proc'を呼び出すことはできません。 ( 'type1(type1)t1'の場合)' call t1%proc' ... – francescalus