我想定义一个函数:
def convert(x: Option[String]): Option[String] = ...
当
x
为Some(str)
并且修剪后str
为空时,它将被转换为None,否则,它将是带有修剪后的字符串的Some
。因此,测试用例将是:
convert(Some("")) == None
convert(Some(" ")) == None
convert(None) == None
convert(Some(" abc ")) == Some("abc")
我可以这样写:
def convert(x: Option[String]): Option[String] = x match {
case Some(str) if str.trim()!="" => Some(str.trim())
case _ => None
}
但是我希望找到一个更简单的实现(单行)。
最佳答案
那这个呢:
def convert(x: Option[String]) =
x.map(_.trim()).filterNot(_.isEmpty())
更新:@JamesMoore和@PeterSchmitz建议的替代语法:
x map {_.trim} filterNot {_.isEmpty}
x map (_.trim) filterNot (_.isEmpty)
关于scala - 如何将Some ("")转换为单行的None?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9569076/