scala - 如何从 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
解决方案
您可以使用headOption
干净的方法。
neighborhood.headOption.map { key =>
neighborhood.tail
.filterNot(_ == key)
.combinations(k-1)
}.getOrElse(Iterator.empty)
推荐阅读
- c++ - 如何在用户按下空格之前继续输入?
- asp.net-mvc - 当前上下文错误VS2017中不存在名称'Url'
- javascript - 测试异步 SQS sendMessage
- c# - 如何使用 PdfiumViewer 将 PDF 转换为位图图像?
- java - Java程序获取gradle构建文件中的版本号
- karate - 空手道模式验证,在使用匹配包含断言时它是否适用于嵌套数组?
- c# - 表示 TFS 服务挂钩事件的 C# 对象
- xslt-2.0 - 如何检查给定的逗号分隔值是否为升序数字序列
- javascript - 取消异常传播
- angular - Angular何时取消订阅()?