我已经看到这要求其他语言,但刚刚发现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
,但它们似乎不是正确的选择。
答案 0 :(得分:44)
任何实际上都应该是正确的选择
if ( ANY( lastNeighArray=="n" ) ) then
如果您希望整个数组包含该值,那么还有ALL。