Object Fortran派生类型:

Object Fortran派生类型:,object,fortran90,derived-types,Object,Fortran90,Derived Types,我被下面的例子弄糊涂了: TYPE :: car real :: x, u ! position, velocity real :: y, v ! real :: z, w ! real,dimension(3) :: uvw_0 ! initial uvw END TYPE TYPE (car), pointer:: mercedes TYPE (car), DIMENSION(m,n,q,r), TARGET :: mercedes_ay

我被下面的例子弄糊涂了:

TYPE :: car 
    real :: x,  u ! position, velocity
    real :: y,  v ! 
    real :: z,  w !  
    real,dimension(3) :: uvw_0    ! initial uvw
END TYPE

TYPE (car), pointer:: mercedes
TYPE (car), DIMENSION(m,n,q,r), TARGET :: mercedes_ay 
它看起来像一个对象的实现,但它是什么呢

TYPE (car), DIMENSION(m,n,q,r), TARGET :: mercedes_ay 

关于类型(car),维度(m、n、q、r)引用了哪些变量?梅赛德斯艾(1,1,1,1)是什么意思?梅赛德斯(1,1,1,1)是什么意思?

它所做的只是声明一个维度(m,n,q,r)的
汽车数组。但是,这些维度并不是由示例代码定义的

mercedes_-ay(1,1,1,1)
是阵列中的第一辆车。因此
mercedes_-ay(1,1,1,1)%x
是第一辆车的
x
位置
mercedes_ay(1,1,1,1)%uvw_0(1)
是第一辆车的首字母
u
。等等

mercedes(1,1,1,1)
是不可能的,因为它没有维度,它是一个标量。所以它只能指向一个标量。相反,它可能会像这样使用:

mercedes => mercedes_ay(1,1,1,1)

这意味着您将
梅赛德斯
指向阵列中的第一辆车。它基本上充当别名。

您熟悉Fortran中的数组吗?