scala - Scala 类型不匹配 - 发现:所需单位:数组 [字符串]
问题描述
我不明白为什么 Scala 在以下示例中抱怨类型错误:
def GetRanges(RangeString1: String): Array[String] = {
val GetOneRange = "\\d+\\-\\d+".r;
var AllRanges = new Array[String](0);
if (!f_stringNullEmpty(RangeString1)) {
GetOneRange.findAllIn(RangeString1).matchData.foreach(
m => AllRanges = AllRanges ++ Array[String](m.group(0)) // Explicit casting to Array[String]
)
}
return scala.util.Sorting.quickSort(AllRanges);
}
我收到的错误是:
notebook:38: error: type mismatch;
found : Unit
required: Array[String]
return scala.util.Sorting.quickSort(AllRanges);
^
显然,遍历正则表达式结果并将它们添加到数组中会导致类型更改。但为什么?还是我错过了一些更基本的东西?
注意:我知道 if 语句返回一个类型 Unit,因为没有指定 else。但我看不出这会影响我的数组的类型。
解决方案
返回类型scala.util.Sorting.quickSort(AllRanges)
为Unit
。但是,GetRanges
需要Array[String]
def GetRanges(RangeString1: String): Array[String] = {
val GetOneRange = "\\d+\\-\\d+".r;
这是quickSort
用于排序数组
/** Sort array `a` with quicksort, using the Ordering on its elements.
* This algorithm sorts in place, so no additional memory is used aside from
* what might be required to box individual elements during comparison.
*/
def quickSort[K: Ordering](a: Array[K]): Unit = {
// Must have iN >= i0 or math will fail. Also, i0 >= 0.
推荐阅读
- database - 维度模型中的事实表实际上是事件表吗?
- node.js - Node / Express CORS POST 给出 504 和 403
- ios - 将 UITableViewCell 类中的 Selector 添加到 UITableViewController 类
- javascript - Javascript window.open(通过扩展)没有访问错误
- c# - 关闭父窗口时如何关闭子窗口?(WPF)
- java - JHipster AuthorizedFeignClient 动态名称
- symfony - 注意:未定义的变量:eventDispatcher?
- javascript - 分组数组并获取计数
- apache-kafka - 如何截断 KTable
- java - 具有 math.pow 条件的循环的大 O