假设我需要在一个过程中实现至少 5 个队列,每个队列都来自不同的定义类型。如何以简单而简短的方式实现这一目标?
另一种看待问题的方式是我遇到的问题:在 fortran 中定义我自己的结构很多时间之后,我不得不用 C++ 编写一个程序,然后我看到模板的使用是多么容易......现在,我想用我的母语也一样......
似乎知识并不总是让人舒服
非常感谢!
您是否考虑过无限多态指针?例如,参见“Modern Fortran Explained”中的 pp 269 ff。
我已经在 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
wherefoo_t
是扩展的用户定义类型list_elem_t<foo_t>
。foo_list
您可以通过以下方式插入元素
call foo_list%insert(elem, ...)
我认为我对 Fortran 模板的解决方案很自然。