这很难用文字描述,但一个例子应该说清楚。假设我有一个派生类型的变量,包含以下组件。
x%length
x%width
有没有自动方式来参考这些没有顶级?换句话说,简单地称它们为
length
width
当然,我可以先做
length => x%length
width => x%width
对于派生类型的所有单个组件。但是我的用例涉及数千个变量,所以我宁愿不这样做。
作为另一种语言的一个例子,python基本上允许这种抑制:
from x import *
答案 0 :(得分:2)
据我所知,fortran中没有这样的功能,至少在我手头的实现中是这样。除此之外,我的帖子的目标是让其他一些想法清楚。
python from x import *
相当于fortran中的use x
。我不是非常pythonic,但我认为你不能直接导入类的成员。所以,只要x是pyton模块,而不是我有限知识的python类,它就可以工作。只要use x
是fortran模块,x
也会有效。
我所知道的一种编程语言是pascal
,它实现了您所追求的功能。有一个方便的构造with
,允许你这样做。
with x do
begin
lenght ....
width ....
end
实际上,它非常有用,因为它允许您剥离对象名称的一部分并直接转到字段。我在使用pascal
时喜欢它,但已经很长时间了。
Delphi
当然也允许这样做。
答案 1 :(得分:2)
Fortran 2003关联构造怎么样?从某种意义上说,这将为您管理列出的指针分配:
Program test
Type :: t
Integer :: length
Integer :: width
End Type
Type (t) :: x = t(42, 43)
Associate (length=>x%length, width=>x%width)
Print *, length, width
End Associate
End Program
引自Fortran 2003(例如,在http://www.j3-fortran.org/doc/year/04/04-007.pdf):" ASSOCIATE构造在命令实体的块执行期间将命名实体与表达式或变量相关联。"
2015年12月的ACM Fortran论坛"编译器支持"文章将关联构造列为Cray,IBM,Intel和NAG完全支持,并由gfortran部分支持。
我不认为有任何方法可以简化这一点,但如果你有很多类型的组件以这种方式别名。