【发布时间】:2022-08-16 10:05:20
【问题描述】:
我正在尝试处理函数参数中的任何类型的输入。对于我的应用程序,我只需要类型的第一个字母来处理每个场景(即:s-> String、i-> Integer...)。
此代码适用于 Int 和 String 但不适用于其他类型:
def getTypeChar(Value: Any): Char = Value.getClass.toString match {
case \"class java.lang.Integer\" => \'i\'
case \"class java.lang.String\" => \'s\'
case \"double\" => \'f\'
case \"boolean\" => \'b\'
case \"class scala.collection.immutable.$colon$colon\" => \'c\'}
对于双精度和布尔值,它会给出以下错误:
线程 \"main\" scala.MatchError 中的异常:类 java.lang.Double(属于类 java.lang.String)
-
为什么不使用
case \"class java.lang.Double\" =>而不是case double =>? -
先不管为什么输入是
Any的问题——你为什么不使用普通的模式匹配(Value match { case _ : Int => \'i\'; ... })? -
@k314159 当我测试 getClass 的双重打印时,这就是它给出的。
-
@MateuszKubuszok 我对此一无所知。但是谢谢你指出