簡體   English   中英

將Option [String]拆分為(Option [String],Option [String])

[英]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) = ???

這樣firstOptionsecondOption的類型將是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.

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