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