假设我需要在一个过程中实现至少5个队列,每个队列来自不同的定义类型。如何以简单而简短的方式实现这一目标?
另一种看待问题的方法是找到我的方式:经过很多时间在fortran中定义我自己的结构后,我不得不用C ++编写一个程序,然后我看到模板的使用是多么容易......现在,我的母语也是如此......
似乎知识并不总是很舒适
非常感谢!
答案 0 :(得分:1)
您是否考虑过无限多态指针?例如,参见“现代Fortran Explained”中的第269页ff。
答案 1 :(得分:1)
我在Ruby中实现了fortran模板,它集成在我的CodeMate中。模板语法类似于C ++。我已经实现了双链表。模板定义片段如下:
...
template:list_t <type elem_t>
type list_t
integer :: num_elem = 0
type(elem_t), pointer :: head, tail
contains
...
procedure :: insert => list_insert
...
end type list
...
template:list_insert@list_t <type elem_t>
subroutine list_insert(this, elem, ...)
class(list_t), intent(inout) :: this
type(elem_t), intent(out), pointer :: elem
...
end subroutine list_insert
模板实例如下:
type(list_t<foo_t>) foo_list
其中foo_t
是扩展list_elem_t<foo_t>
的用户定义类型。您可以通过
foo_list
call foo_list%insert(elem, ...)
我认为我对Fortran模板的解决方案很自然。
答案 2 :(得分:0)