【发布时间】:2012-03-05 15:18:13
【问题描述】:
我要定义一个函数:
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
}
但我希望能找到一个更简单的实现(单行)。
【问题讨论】:
-
您的环境中是否缺少换行符?你得到的报酬与你写的行数成反比吗?我的建议是只使用两行版本并停止为自己工作:-)
-
我只是想让我的代码简单明了
-
@paxdiablo:这是一个有效的问题,因为示例确实可以改进:代码运行
str.trim两次,这显然是要避免的。 -
@Freewind,您可能会发现 this 很有用。
-
我对找到一种更好的做事方式没有任何问题。我唯一的问题是人们浪费时间试图将三行函数转换为单行函数。这些人显然手头有太多时间 :-) 回想起来,问题中的关键词可能是“更简单”,但过度强调了“一行”这个短语,即我为什么评论。
标签: scala