【发布时间】:2014-07-26 02:48:47
【问题描述】:
我有一个 Fortran 派生类型 T,它包含(许多)不同等级和类型的数据数组。这些数组隐藏在一个复杂的数据结构中,我希望有一个 getter 函数来执行以下操作:
a => T%get(data_id)
其中“a”是给定类型的数组指针,data_id 是一个整数,用于查找数据结构内的数据。我通过在一个通用名称下重载许多“get_thistype()”函数来做到这一点。
TYPE T
PROCEDURE :: get_real
PROCEDURE :: get_integer
GENERIC :: get => get_real,get_integer
END TYPE
如果 get_thistype() 例程是子例程,则此方法有效,但如果它们被编写为函数,则无效。这意味着我的代码如下所示:
CALL T%get(a,data_id)
我发现它的可读性要差得多。有没有办法重载具有相同参数列表但返回类型不同的函数?还是我必须为此使用子例程?
【问题讨论】:
-
我认为编译器很难仅根据返回类型找出正确的函数,所以这可能是不可能的。我只会使用子程序。
标签: fortran