Я пробовал использовать forall
для размещения динамических массивов, но gfortran это не понравилось. Я также обнаружил, что write
операторы запрещены в блоке forall
, и я подозреваю, что read
операторы тоже.
Какие другие функции / операции не разрешены в блоке forall
?
Для чего конкретно эта конструкция, кроме того, что иногда заменяет do
циклов, когда порядок не имеет значения? Я думал, что это сделает кодирование более разборчивым и элегантным, особенно, когда порядок операций не важен, но кажется довольно ограничивающим в отношении того, какие операции могут выполняться внутри forall
.
Каковы причины этих ограничений, т.е. что они защищают / предотвращают от ошибок пользователя? Это хорошая идея использовать forall
? Если да, то для каких целей?
Прямо сейчас в коде, над которым я работаю, есть только один блок forall
, и если я переведу все это в do
циклы, это даст четыре вложенных цикла. Какой способ лучше?