Pur*_*ret 30 arrays fortran if-statement where fortran90
我已经看到这要求其他语言,但刚刚发现Fortran可以很好地处理数组,我想可能有一个简单的方法来做这个没有循环.
目前我正在搜索查看"最近邻居"的3D数组以查看它们是否包含字母"n",并且每当找到此值时,我希望它执行一些clusterLabel赋值(这与此问题无关) )
我想使用if(lastNeighArray.eq."n") then...<rest of code>
但由于显而易见的原因,它不喜欢根据值检查数组.它也不像我一样使用lastNeighArray(:),即使我希望它一次检查一个元素.where(lastNeighArray.eq."n")不起作用,因为我在where循环中有一个case语句,我得到错误WHERE statements and constructs must not be nested.
所以我有点卡住了.我真正想要的是类似when(lastNeighArray.eq."n")但不存在的东西.
我也看过了any,forall但他们似乎不是正确的选择.
Vla*_*r F 46
任何人都应该是正确的选择
if ( ANY( lastNeighArray=="n" ) ) then
Run Code Online (Sandbox Code Playgroud)
如果您希望整个数组包含该值,那么还有ALL.