Ian Bu sh. Ответ дает явный пример того, как установить значение константы массива. Я расскажу об этом немного подробнее.
Значение именованной константы в
<type>, parameter[, <attr>] :: named_constant = initexpr
задается значением initexpr
, преобразованным, если необходимо, в тип named_constant
.
initexpr
должно быть постоянным выражением и для использования в качестве значения массива должен быть массив той же формы или скалярное значение (или того же ранга если константа является подразумеваемым массивом форм).
Что мы можем использовать, чтобы сделать initexpr
выражение константы массива? Есть несколько способов, но, естественно, в этом случае мы хотим использовать конструктор массива. Правила Fortran 2018 10.1.12 говорят нам, что мы должны помнить, чтобы конструктор массива был постоянным выражением.
Из ответа Яна Бу sh, в [ ( startval+(i-1)*step,i=1,n ) ]
у нас есть такое вещь:
1
и n
(элемент управления l oop) - константы startval
и step
- константы, а i
- константа, при вычислении значения, так что все выражение является константным выражением
Если какие-либо из этих вещей не являются константами, то конструктор массива не является постоянным выражением и будет непригодным для использования используемый. В противном случае у вас довольно много свободы. Указанные правила дают другие идеи, выходящие за рамки этого конструктора массива.
Наконец, вы также можете сделать массив с именем постоянной подразумеваемой формы:
real, parameter, dimension(*) :: vals_p = [ ( startval+(i-1)*step,i=1,n ) ]
вместо того, чтобы повторять размер массива.