对于普通的字符串,我可以这样做:
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)],但这不是我要找的。有什么想法吗?
发布于 2014-04-16 10:45:13
您可以使用折叠:
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))
} https://stackoverflow.com/questions/23106305
复制相似问题