Scala 使用模式匹配识别字符串
Scala identify string with pattern matching
我想知道如何避免将 Any
转换为 String
而是使用模式匹配。
已从 spark 收集数据帧 like df.select('column).first.toSeq.head
直接投射是一种解决方法 df.select('column).first.toSeq.head.asInstanceOf[String]
,但是
我更愿意使用像
这样的 scala 本机模式匹配
val collectedFromSpark: Any = "someString"
val realString:String = collectedFromSpark match{
case s:String => _
case _ => throw new Exception("expected something else")
}
然而,realString:String
只接收 Any
而不是 String
。
如何以 Scala 本机方式制定此转换?
将您的情况更改为:
case s: String => s
现在它会知道 s
是 String
。
我想知道如何避免将 Any
转换为 String
而是使用模式匹配。
已从 spark 收集数据帧 like df.select('column).first.toSeq.head
直接投射是一种解决方法 df.select('column).first.toSeq.head.asInstanceOf[String]
,但是
我更愿意使用像
val collectedFromSpark: Any = "someString"
val realString:String = collectedFromSpark match{
case s:String => _
case _ => throw new Exception("expected something else")
}
然而,realString:String
只接收 Any
而不是 String
。
如何以 Scala 本机方式制定此转换?
将您的情况更改为:
case s: String => s
现在它会知道 s
是 String
。