首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将Option[String]拆分为(Option[String],Option[String])

将Option[String]拆分为(Option[String],Option[String])
EN

Stack Overflow用户
提问于 2014-04-16 10:09:17
回答 1查看 1.2K关注 0票数 1

对于普通的字符串,我可以这样做:

代码语言:javascript
复制
val str = "asdzxc"
val (first, second) = str.splitAt(3) // splits into ("asd", "zxc")

我希望能够为Option[String]做类似的事情

代码语言:javascript
复制
val optionalString: Option[String] = getOptionalString(...)
val (firstOption, secondOption) = ???

因此firstOptionsecondOption的类型将是Option[String]。我知道我可以这样做:

代码语言:javascript
复制
optionalString.map(_.splitAt(3))

它返回给我一个Option[(String, String)],但这不是我要找的。有什么想法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-04-16 10:45:13

您可以使用折叠:

代码语言:javascript
复制
optionalString.map(_.splitAt(3)).fold((None: Option[String], None: Option[String])) { case (a, b) => (Some(a), Some(b)) }

或者模式匹配(可能更清楚一些,因为它不需要显式类型参数):

代码语言:javascript
复制
optionalString.map(_.splitAt(3)) match {
  case None => (None,None)
  case Some((a,b)) => (Some(a), Some(b))
}       
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23106305

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档