有没有什么优雅的方法来返回None而不是基于字符串的对象?

问题描述 投票:0回答:2

如果输入的字符串为空,有没有什么优雅的方法来返回None而不是一个对象?

下面是我想实现的一个粗略的例子。

private def foo(input: String): Option[Object] = {
   Some(Object(input)) //return None instead if input is empty
}

*PS : 我所说的优雅是指我不需要再定义一个函数来实现这个目标。

scala
2个回答
4
投票

Scala 2.13.x提供了 Option.when() 方法。

def foo(input: String): Option[Object] =
  Option.when(input.nonEmpty)(Object(input))

1
投票
def foo(input: String): Option[Object] =
  if(input.nonEmpty)
    Some(Object(input))
  else
    None

任何阅读你的代码的人都会立即解析它,所以真的,没有比这更好的了。


1
投票

为了完整,跟随@jwvh的回答。Option.unless 中声明的否定谓词。Option.when,

private def foo(input: String): Option[Object] = {
   Option.unless(input.isEmpty)(Object(input))
}
© www.soinside.com 2019 - 2024. All rights reserved.