派生数据类型
定义一个新类型 mytype
:
type::mytype
integer::int
real :: float
end type mytype
声明 mytype 类型的变量 :
type(mytype) :: foo
可以使用%
运算符 1 访问派生类型的组件 :
foo%int = 4
foo%float = 3.142
Fortran 2003 功能(尚未由所有编译器实现)允许定义参数化数据类型:
type, public::matrix(rows, cols, k)
integer, len::rows, cols
integer, kind::k = kind(0.0)
real(kind = k), dimension(rows, cols) :: values
end type matrix
派生类型 matrix
有三个类型参数,它们在类型名称后面的括号中列出(它们是 rows
,cols
和 k
)。在每个类型参数的声明中,必须指出它们是 kind(kind
)还是 length(len
)类型参数。
类型参数(如内部类型的参数)必须是常量表达式,而长度类型参数(如内部字符变量的长度)在执行期间可能会有所不同。
请注意,参数 k
具有默认值,因此当声明 matrix
类型的变量时,可以提供或省略它,如下所示
type (matrix (55, 65, kind=double)) :: b, c ! default parameter provided
type (matrix (rows=40, cols=50) :: m ! default parameter omitted
派生类型的名称可能不是 doubleprecision
或与任何内在类型相同。
- 许多人想知道为什么 Fortran 使用
%
作为组件访问运算符,而不是更常见的.
。这是因为.
已经被运算符语法所取代,即.not.
,.and.
,.my_own_operator.
。