【发布时间】:2011-12-22 10:33:36
【问题描述】:
我尝试使用forall 分配动态数组,但 gfortran 不喜欢这样。我还发现write 语句在forall 块中是被禁止的,我怀疑read 语句也是如此。
forall 块中不允许有哪些其他功能/操作?
除了在顺序无关紧要时有时替换do 循环之外,这个构造究竟是什么?我认为它会使编码更加清晰和优雅,尤其是在操作顺序不重要的情况下显示出来,但是对于可以在 forall 中完成的操作似乎非常有限制。
这些限制的原因是什么,即它们保护/防止用户搞砸的原因是什么?使用forall 是个好主意吗?如果是这样,出于什么目的?
现在在我正在处理的代码中只有一个forall 块,如果我在do 循环中将其全部翻译出来,它将产生四个嵌套循环。哪种方式更好?
【问题讨论】:
-
FORALL 不需要 PURE 程序和函数吗?