Как проверить, содержит ли массив 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

есть также все, если вы хотите, чтобы весь массив содержал это значение.