Scala模式匹配常用

Posted pengx

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Scala模式匹配常用相关的知识,希望对你有一定的参考价值。

今天在工作中遇到的几个小问题,总结一下:

1.因为业务需要调用php的接口,获取到的返回体需要做一段逻辑处理,然而某个字段接收到的参数是io.serializable类型,字段的类型不是预期的string类型,当时有点懵逼,因为是用Scala的match case做模式匹配,也没多想,幸亏同事提示一番,才想起String其实实现了serializable接口,所以尽管返回的是io.serializable类型,但是也可以用string来接收;

2.调用PHP接口,返回体用JsonObject接受,但是有些许字段是null,本能反应用Gson转换为对象,用Scala的Option去接收可能为null的字段,但是程序运行就会报一个with no args的错误;

解决方法:用case class接收PHP接口返回,对于可能为null的字段不用加Option修饰,先不用管这个case class ,而是在JsonObject对字段加上isJsonNull的判断,后面Build thrift返回体的时候,这些字段定义为Option类型的Build进去就好了;

其实现在一想,用case class对字段进行判断获取也是可以的,明天实验一番;

        val uesrName:Option[String] = response.get("data").getAsJsonObject.get("userName").isJsonNull match {
          case true => None
          case false => Some(response.get("data").getAsJsonObject.get("userName").getAsString)
        }

 

以上是关于Scala模式匹配常用的主要内容,如果未能解决你的问题,请参考以下文章

scala 常用模式匹配类型

Scala模式匹配常用

2021年大数据常用语言Scala(三十五):scala高级用法 提取器(Extractor)

Scala 基础(十三):Scala 模式匹配

Scala 模式匹配

必会Scala之模式匹配和样例类