![](/img/trans.png)
[英]String blank (empty or null) check : if structure vs java 8 optional/filter
[英]Scala Check optional string is null or empty
我是Scala的新手,我想学习如何在可选字符串上添加null和空检查?
val myString : Option[String]
if (null != myString) {
myString
.filter(localStr=> StringUtils.isEmpty(localStr))
.foreach(localStr=> builder.queryParam("localStr", localStr))
}
上面的代码工作,但我想学习一些优雅的方式来编写相同的检查。 任何帮助都非常感谢,
谢谢
使用Option
构造函数有一种非常方便的方法。
scala> Option("Hello Worlds !")
res: Option[String] = Some(Hello Worlds !)
scala> Option(null)
res: Option[Null] = None
因此,如果您有可能为空值的字符串列表,则可以使用Option
和flatten
的组合:
scala> List("Speak", "friend", null, "and", null ,"enter").map(s => Option(s)) .flatten
res: List[String] = List(Speak, friend, and, enter)
模式匹配有助于简化代码:
myString match {
case Some(s) if(!s.isEmpty) => s.foreach(localStr=> builder.queryParam("localStr", localStr))
case _ => "No String"
}
我想惯用法看起来像这样:
val myString : Option[String] = ...
myString
.filterNot(StringUtils.isEmpty)
.foreach(builder.queryParam("localStr", _))
Option [String]可以存储两种类型的值:Some(String)或None,所以当你不需要检查null时,只需在scala match case的帮助下检查None,如下所示
val myString : Option[String] = Some("ss")
myString match {
case Some(str)=>str.filter(localStr=> StringUtils.isEmpty(localStr))
.foreach(localStr=> builder.queryParam("localStr", localStr))
case None => //do whatever you want while condition failure
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.