首页 > 解决方案 > 如何从 Scala 函数中跳过“ArrayIndexOutOfBoundsException:0”(返回类型:迭代器字符串数组)?

问题描述

我有一个 Scala 函数,如下所示。输入邻域是字符串数组。但是,有时它(即邻域)可能是空的。在这种情况下,我得到“ArrayIndexOutOfBoundsException”,这是可以理解的。我想避免这个例外。我的意思是,我的代码必须跳过此错误并继续下一项工作(此处未显示)。

我试过这个:

if(neighborhood.isEmpty){
true
} else {
      val key = neighborhood(0)
      neighborhood
        .filterNot { _.equals(key) }
        .combinations(k - 1)
}

但 IntelliJ 显示“迭代器和布尔值之间的类型不匹配”。如何处理?我是 Scala 的新手。谢谢!

这是原始功能:

private def scanData(neighborhood: Array[String], k: Int): Iterator[Array[String]] = {
      val key = neighborhood(0)
      neighborhood
        .filterNot { _.equals(key) }
        .combinations(k - 1)
}

```scala

标签: scala

解决方案


您可以使用headOption干净的方法。

neighborhood.headOption.map { key =>
  neighborhood.tail
    .filterNot(_ == key)
    .combinations(k-1)
}.getOrElse(Iterator.empty)

推荐阅读