首先,我知道清单已被弃用,最好使用TypeTag,但就目前而言,它不适合我,所以请考虑我的问题:
如何检查清单所代表的类型是否是清单[Numberic [_]]所代表的类型的子类型?
实际上,我有一个接收清单的功能,我想检查它是否是数字。
def isNumeric(m: Manifest[T]) : Boolean = m <:< manifest[Numeric[_]]
但是,它不起作用,例如输入清单[双]。
任何想法,如何让它发挥作用?
答案 0 :(得分:2)
Numeric
是一个类型类,它与子类型和Manifest
(或TypeTag
)没有任何关系。
Double
不是Numeric
。类型参数中的T : Numeric
表示范围中存在类型Numeric[T]
的隐式值。你无法通过反思来检查它。
也许你可以在macros
中搜索隐含,但我不确定,我认为这不是你想要的。
所以答案是:你就是不能。
即使在理论上也是不可能的:在运行时没有关于隐式值的信息,并且在编译时没有Manifest[T]
的实例。