定义一个新类型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.。