一般的に言えば、派生型の変数の名前を、サブルーチンの引数に渡す名前に変更したいとします。 'derived%type_xx'のすべてを書くことはそれほど楽しいものではありません。さらに、私は、派生型の値を新しい割り当てられたメモリを必要とする新しい変数にコピーする際に余分なメモリを費やしたくありません。さらに、私は割り当て可能な配列が多くの理由からポインタよりも好まれることを知っています。私は割り当て可能な変数へのポインタを定義しようとしましたが、失敗しました。私はコードを単純化したいので、これを試してみました。どちらも、読みやすく、長すぎないようにしています。目標を達成する方法があるのだろうか?ありがとう。ここで割り当て可能な配列を含む派生型へのポインタ
は、デモコードです:
Module module_type
IMPLICIT NONE
TYPE type_1
REAL,ALLOCATABLE :: longname_1(:), longname_2(:)
END TYPE
END MODULE
!------------------------------------------------------------------------------------------
SUBROUTINE TEST(input)
USE MODULE module_type
IMPLICIT NONE
TYPE(type_1) :: input
input%longname_1 = input%longname_1 + input%longname_2 ! Use one line to show what I mean
END SUBROUTINE
そしてここでは、失敗したものです:
Module module_type
IMPLICIT NONE
TYPE type_1
REAL,ALLOCATABLE :: longname_1(:), longname_2(:)
END TYPE
END MODULE
!------------------------------------------------------------------------------------------
SUBROUTINE TEST(input)
USE MODULE module_type
IMPLICIT NONE
TYPE(type_1),TARGET :: input
REAL,POINTER :: a => input%longname_1 &
& b => input%longname_2
a = a + b ! much better for reading
END SUBROUTINE
それは小さな問題のように思えるが、私はあまり痛みなし私のコードを読みたいです未来。最適な選択肢は何ですか?どうもありがとう。
ありがとうございました! – Ruizhi