簡體   English   中英

Scala Check可選字符串為null或空

[英]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

因此,如果您有可能為空值的字符串列表,則可以使用Optionflatten的組合:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM