据我了解,我们应该避免在 Scala 中使用 null
。如果某些字段在逻辑上不合法,不能具有“无值”,那么我们不应该使用 Option
以避免过度使用 Option
。
那么让我们看一下代码。 我有课
case class User (name: String)
并且我 100% 确定 name
字段不能为 null
,因此我只使用 String
而不是 选项[字符串]
。
问题是一些标准 Scala 方法返回给我 Option
。 (在我的例子中,IterableLike#find
方法返回 Option)
所以问题是,当我将 name
包装到 Option
时,如何创建 User
实例?
为了清楚一点,这是代码:
val userName: Option[String] = myList.find(...)
val user = User(userName.get) // or may be I should use userName.orNull ? or throw exception?
我听说 Option.get
不是优雅的解决方案。 orNull
方法与get
几乎相同。
最佳答案
您想要将 Option[String]
映射到 Option[User]
:
val userName: Option[String] = myList.find(...)
val user: Option[User] = userName.map(n => User(n))
关于scala - 何时使用 Option#orNull,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29683877/