我觉得这必须是重复的,但我似乎无法在任何地方找到它,并且我没有通过非常快速的Google搜索获取任何内容。在当前命名空间中更改使用关联对象的名称
有没有办法改变模块中的东西的名称,以便它不与本地(或全局)的名称冲突?考虑例如:
module namespace
real x !some data
contains
subroutine foo()
write(0,*) "foo!"
end subroutine foo
end module
subroutine foo()
write(0,*) "foo is the new bar :)"
end subroutine
program main
use namespace
real x
call foo() !should print "foo is the new bar"
call namespacefoo() !somehow call module namespace's version of foo
end program main
上面的代码不编译因为x
没有定义。当然,如果我不想要一个名为x
的局部变量,那么我可以use namespace, only: foo
,但是要修改我的局部变量名似乎有点麻烦。 (作为一个方面说明,我敢肯定,我以前用的语句only
部分一些神奇的看到了这一点......)
对于那些受益谁也知道蟒蛇,我在找类似Python的东西:
import namespace as other_namespace
或者我猜,因为Fortran语言不相当有命名空间控制的该级别:
from namespace import somefunc as otherfunc
from namespace import somedata as otherdata
是的,那是我需要的。好建议。来自python我不习惯思考“私有”数据,但是python使*真的很容易将名称空间分开,所以它不是必须的 - 还有一些约定可以说“请不要乱用有了这个变量,除非你知道你在做什么“ – mgilson