【发布时间】:2017-09-29 23:06:47
【问题描述】:
我正在尝试编写一个函数来计算类型 T 的元素数组中通过 T=>Boolean 类型测试的元素数。
到目前为止我所拥有的是:
def countPass[T](elem: Array[T]) = {
var count = 0
for(x <- elem)
x match {
case x: T => count += 1
}
count
}
//TEST
println(countPass[Boolean](Array(true, 52, "test")))
我遇到了几个错误,第一个是:
combinators.scala:45: warning: abstract type pattern T is unchecked since
it is eliminated by erasure
case x: T => count += 1
^
下一个错误是:
combinators.scala:54: error: type mismatch;
found : Int(52)
required: Boolean
println(countPass[Boolean](Array(true, 52, "test")))
^
combinators.scala:54: error: type mismatch;
found : String("test")
required: Boolean
println(countPass[Boolean](Array(true, 52, "test")))
^
我不确定第一个错误发生了什么,但是对于第二个错误,它会在任何时候抛出异常,它不是布尔值。我不希望这种情况发生,因为我只是在计算数组中 T 类型元素的数量。
问题:我应该如何重构我的代码来修复这两个错误?
【问题讨论】: