简体   繁体   English

Scala通过模式匹配识别字符串

[英]Scala identify string with pattern matching

I wonder how to avoid casting Any to String but rather use pattern matching. 我不知道如何避免将AnyString而是使用模式匹配。

Having collected a dataframe from spark like df.select('column).first.toSeq.head Direct casting sort of is a workaround df.select('column).first.toSeq.head.asInstanceOf[String] , but I would prefer to use scala native pattern matching like 已经从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")
  }

However, realString:String only receives Any and not String . 但是, realString:String仅接收Any ,而不接收String

How can I formulate this cast in a scala native way? 如何以scala本机方式制定演员表?

Change your case to this: 将您的情况更改为此:

case s: String => s

Now it will know that s is a String . 现在它将知道s是一个String

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM