scala - Scala:如何检查 Array[T] 的类型
问题描述
我有一个Array[T]
,如何检查它的类型?
我试过
def check[T](a: Array[T]) = {
a match {
case _: Array[Int] => // create type specified IntVector
case _: Array[Float] => // create type specified FloatVector
}
}
编译器引发错误
Scrutinee is incompatible with pattern type, found: Array[Int], required: Array[T]
我想这样做的原因是,假设我能够枚举所有类型,而目前只有 Int 和 Float
def check[T](a: Array[T]) = {
val base: Base = baseVector
val derived = a match {
case _: Array[Int] => base.asInstanceOf[IntVector]
case _: Array[Float] => base.asInstanceOf[FloatVector]
}
derived.run()
}
abstract class Base
def run()
class IntVector extends Base
override def run()
class FloatVector extends Base
override def run()
解决方案
这对我有用:
def check[T](a: Array[T]) = {
a match {
case x if x.isInstanceOf[Array[Int]] => println("int")
case y if y.isInstanceOf[Array[Float]] => println("float")
case _ => println("some other type")
}
}
推荐阅读
- c - Sort the array according to the alphabetic order of the last names of the students
- sql-server - 为 SQL Server 绑定的 CSV 格式化 BIGQUERY 输出
- mysql - 如何使用 MySQL 查询从表中选择除一列之外的所有内容?
- javascript - 使用 JS + CSS 的主动字体粗细
- python - 根据':'拆分txt,但不包括python中的时间戳
- javascript - 具有数据库数据的材质 UI 选择组件
- database - Redis 6 会保证客户端请求的顺序吗?
- matrix - 将此解决方案扩展到 Julia 中的高维矩阵
- python-3.x - 将用户的输入写入 if 语句中的文件。(Python)
- c# - Xamarin CollectionView 缓慢滚动