具有一维固定的Rank-2可分配阵列声明

时间:2017-05-19 01:50:57

标签: arrays fortran

我尝试构建以下代码:

FrameLayout contentFrameLayout = (FrameLayout) findViewById(R.id.content_frame);
    getLayoutInflater().inflate(R.layout.activity_home, contentFrameLayout);  

这会导致错误:

  

显式形状数组的错误数组规范。

我试着反过来做这件事:

integer, parameter :: N = 2
real, dimension(1:N,:), allocatable :: ArrayA

这一次,错误如下:

  

延迟形状数组

的规范不正确

我的问题是双重的:

为什么这两种情况会导致不同的错误?如何声明一个可在一个方向上分配但在另一个方向上固定的2D数组?

1 个答案:

答案 0 :(得分:2)

  

为什么这两种情况会导致不同的错误?

我希望它是因为编译器从左到右读取行。所以当它到来时

real, dimension(1:N,:), allocatable :: ArrayA

它读了这么多

real, dimension(1:N,

并且看到它正在读取明确形状的数组的声明,然后读取:并抱怨。

同样,阅读时

real, dimension(:,1:N), allocatable :: ArrayA

它会看到它确定为延迟形状数组

的声明
real, dimension(:,

并期待另一个:

  

如何声明可在一个方向上分配的2D数组   固定在另一个?

编辑:经过OP的进一步评论

这有什么问题?

integer, parameter :: N = 2
integer :: m
real, dimension(:,:), allocatable :: arrayA
...
! get a value for m
allocate(arrayA(m,N))