1

我想通过使用 OOP 来提高我的 Fortran 代码的可读性。我最终得到了相当复杂的派生类型,例如:a%b%c%d%e,在 module 中定义mymod

现在,在一个子程序中我做

subroutine test
    use mymod, only: a
    ! lots of unrelevant stuff, especially with a%b%c%d%e.
end subroutine

我的问题如下:我想在这个特定的子例程中重命名a%b%c%d%e为一个简单的newname.

例如,我测试过:use mymod, only: a%b%c%d%e => newname但我得到一个编译错误,指出:

错误:USE 语句中的语法错误

4

2 回答 2

4

您可以使用该associate构造来执行此操作。

subroutine test
    use :: mymod, only: a
    associate(newname => a%b%c%d%e)
        ! lots of unrelevant stuff, now using newname.
    end associate
end subroutine
于 2013-04-12T15:26:39.920 回答
2

可以说更好的方法是通过子例程的参数列表传递参数,在这种情况下,您可以使用任何您喜欢的本地名称:

subroutine test(a)
...
end subroutine

然后打电话

call subroutine test(a%b%c%d%e)

而且,当我在写的时候,当你在一个use声明中重命名一个实体时,表单是

local-name => use-name 

而不是,正如你所拥有的,

use-name => local-name
于 2013-04-12T15:35:03.147 回答