Scala Try的toOption方法返回Some(null)

mak*_*aks 7 scala

应该Success(转换的孩子)Some(null)在转换为时返回Option

例如, Try(null).toOption在scala 2.11.7中返回Some(null) Success的toOption方法,只需返回即可实现Some(value).如果try的基础值是?,None在转换Try为使用toOption方法的选项时,为什么不返回null

jos*_*ley 6

以下是toOptionScala 2.11.7 的来源:

def toOption: Option[T] = if (isSuccess) Some(get) else None
Run Code Online (Sandbox Code Playgroud)

我同意布鲁诺的观点,这很令人困惑,应该读一下

def toOption: Option[T] = if (isSuccess) Option(get) else None
Run Code Online (Sandbox Code Playgroud)

  • 返回null会造成混淆。您的建议假定null与失败是无法区分的。仅使用toOption.filter(_!= null)会更容易,或者如果您经常这样做(也许是在处理Java API),则使其成为扩展方法。 (2认同)