[英]How to convert an Option[String]to List [String]in Scala
[英]How to convert an Option[String]to List [Int]in Scala
我可以使用以下代碼將Option [String]轉換為List [String]:
def convertOptionToListString(a: Option[String]): List[String] = {
return a.toList.flatMap(_.split(",")) // ex : ("value1", "value2", "value3", etc)
}
但是我如何將Option [String]轉換為List [Int],所以最后我可以使用整數列表(1,3,5)。 我的Option [String]看起來像這樣:Some(“ 1,3,5”)
請注意,值1,3,5來自從URL發送的params.get(“ ids”) ,而params.get是Option [String]
val params = request.queryString.map { case (k, v) => k -> v(0) }
謝謝
如果要將List[String]
轉換為List[Int]
,跳過不可解析的值,則可以使用Try
:
import scala.util.Try
List("1", "2", "3").flatMap(x => Try(x.toInt).toOption)
res0: List[Int] = List(1, 2, 3)
List("1", "2", "abc").flatMap(x => Try(x.toInt).toOption)
res1: List[Int] = List(1, 2)
Scala 2.13
引入了String::toIntOption
。
結合flatMap
,我們可以安全地將String
轉換為Int
並消除格式錯誤的輸入:
List("1", "2", "abc").flatMap(_.toIntOption)
// List[Int] = List(1, 2)
val a: Option[String] = Some("1,3,5")
val l = a.toList.flatMap(_.split(",")).map(_.toInt)
從您所在的位置,只需將其映射到toInt
。 但是您的操作順序有點奇怪。 就像您使用toList
只是為了滿足類型。 toList
是這些臭功能之一,如果您使用它,可能會濫用某些東西。
讀取效果最好的邏輯是,如果您有Some
,則對其進行處理,否則,您默認為空列表(我在猜測):
option match {
case Some(str) => str.split(",").map(_.toInt)
case None => List()
}
要么:
option.map(_.split(",").map(_.toInt)).getOrElse(List())
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.