scala - 何时使用 Option#orNull

标签 scala scala-option

据我了解,我们应该避免在 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/

相关文章:

scala - 不可能从java文件调用scala包函数吗?

arrays - 使用排序对数组数组进行升序和降序排序

scala - 为什么 Option 会扩展 Product?

scala - 在 Spark 中向文本文件添加新行

generics - 使用泛型将 java 接口(interface)移植到 scala trait

scala - 需要将 Seq[Option[A]] 转换为 Option[Seq[A]]

scala - 如何在 for-yield block 中记录 None 错误

scala - 有什么方法可以使用反射在运行时访问 Scala 选项声明的类型吗?

Scala 选项模式匹配替代方案?

database - Lift 映射器中的外键约束