模式匹配取决于 Class
Pattern matching depends on Class
我有以下代码:
val obj: Int = 5;
var objType: Class[_] = obj.getClass
objType match {
case _: Int =>
byeBuffer.putInt(asInstanceOf[Int])
case _: Long =>
byeBuffer.putLong(asInstanceOf[Long])
case _: Float =>
byeBuffer.putFloat(asInstanceOf[Float])
case _: Double =>
byeBuffer.putDouble(asInstanceOf[Double])
case _: Boolean => {
val byte = if (asInstanceOf[Boolean]) 1 else 0
byeBuffer.put(byte.asInstanceOf[Byte])
}
case default => throw new UnsupportedOperationException("Type not supported: " + default.getClass)
}
此代码已损坏。但是,如果我使用 obj 而不是 objType 那么它就可以工作。但我想在模式匹配中专门使用 objType。
尝试
val intClass = classOf[Int]
val longClass = classOf[Long]
val floatClass = classOf[Float]
val doubleClass = classOf[Double]
val booleanClass = classOf[Boolean]
objType match {
case `intClass` =>
case `longClass` =>
case `floatClass` =>
case `doubleClass` =>
case `booleanClass` =>
}
我有以下代码:
val obj: Int = 5;
var objType: Class[_] = obj.getClass
objType match {
case _: Int =>
byeBuffer.putInt(asInstanceOf[Int])
case _: Long =>
byeBuffer.putLong(asInstanceOf[Long])
case _: Float =>
byeBuffer.putFloat(asInstanceOf[Float])
case _: Double =>
byeBuffer.putDouble(asInstanceOf[Double])
case _: Boolean => {
val byte = if (asInstanceOf[Boolean]) 1 else 0
byeBuffer.put(byte.asInstanceOf[Byte])
}
case default => throw new UnsupportedOperationException("Type not supported: " + default.getClass)
}
此代码已损坏。但是,如果我使用 obj 而不是 objType 那么它就可以工作。但我想在模式匹配中专门使用 objType。
尝试
val intClass = classOf[Int]
val longClass = classOf[Long]
val floatClass = classOf[Float]
val doubleClass = classOf[Double]
val booleanClass = classOf[Boolean]
objType match {
case `intClass` =>
case `longClass` =>
case `floatClass` =>
case `doubleClass` =>
case `booleanClass` =>
}