我有大量不同维度的数组。但是,我按顺序命名它们,例如 var1、var2 等等。为了阅读它们,我有兴趣以如下方式循环它们:
do i=1,n
read(1,*) var<i>
enddo
当然,由于数组的维度不同,我不能简单地添加一个维度并将它们折叠成一个维度。
我的印象是 Fortran 不允许将字符串转换为变量名或类似的东西,所以有人知道如何处理吗?
谢谢!
您要问的本质上是(非常)传统编译语言中的元编程。你真的不能那样做。
对于 Fortran,我能想到的最接近的方法是获取一个支持Fortran 2003中的一些 OO 内容的编译器,并使用它的运行时多态性。这样,您可以创建一个父数组类,然后为每个不同的数组边界集创建一个子类,然后循环遍历这些数组。