[英]Split an Option[String] into (Option[String], Option[String])
對於普通的String,我可以這樣做:
val str = "asdzxc"
val (first, second) = str.splitAt(3) // splits into ("asd", "zxc")
我希望能夠對Option[String]
做類似的事情:
val optionalString: Option[String] = getOptionalString(...)
val (firstOption, secondOption) = ???
這樣firstOption
和secondOption
的類型將是Option[String]
。 我知道我可以這樣:
optionalString.map(_.splitAt(3))
返回我一個Option[(String, String)]
但這不是我想要的。 有任何想法嗎?
您可以使用折疊:
optionalString.map(_.splitAt(3)).fold((None: Option[String], None: Option[String])) { case (a, b) => (Some(a), Some(b)) }
或模式匹配(由於不需要顯式類型參數,因此可能更清晰一點):
optionalString.map(_.splitAt(3)) match {
case None => (None,None)
case Some((a,b)) => (Some(a), Some(b))
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.