Как проверить, содержит ли массив Fortran значение?
Я видел, как это спрашивалось для других языков, но только что узнал, как хорошо Fortran может обрабатывать массивы, я подумал, что может быть простой способ сделать это без циклов.
в настоящее время я ищу по 3D-массиву, глядя на "ближайших соседей", чтобы увидеть, содержат ли они букву "n", и всякий раз, когда он находит это значение, я хочу, чтобы он выполнил какое-то назначение clusterLabel (что не относится к этому вопросу)
Я хотел использовать if(lastNeighArray.eq."n") then...<rest of code>
но для очевидного причины, по которым ему не нравится проверять массив на значение. Также не нравится, как я использую lastNeighArray(:)
, хотя я хотел бы проверить каждый из элементов по одному за раз. where(lastNeighArray.eq."n")
не работает, поскольку у меня есть оператор case внутри цикла where, и я получаю ошибку WHERE statements and constructs must not be nested.
так что я немного застрял. Что я действительно хочу, так это что-то вроде when(lastNeighArray.eq."n")
но этого не существует.
Я также посмотрел на any
и forall
но они не кажутся правильным выбором.
1 ответов
любой на самом деле должен быть правильный выбор
if ( ANY( lastNeighArray=="n" ) ) then
есть также все, если вы хотите, чтобы весь массив содержал это значение.