gpt4 book ai didi

scala - 何时在 Scala 中使用 Option,何时不使用

转载 作者:行者123 更新时间:2023-12-04 19:49:24 27 4
gpt4 key购买 nike

假设我有一些类(class):

case class Product(id: Int, name: String)

如果我正在与某些 Java API 或其他东西交互,并且这些值中的任何一个都可能为空,那么我可以这样写:

case class Product(id: Option[Int], name: Option[String])

如果我不与任何以 null 为概念的东西交互,那么只坚持第一个实现就可以了,对吗?这似乎有点烦人,因为我还必须编写单元测试来测试这些东西......

想法将不胜感激。

最佳答案

何时使用 Option 的问题应该更多地与值可能丢失而不是值可能被错误地设置为 null 这一事实有关。

澄清一下,如果您担心您的库的用户会以某种方式将 idname 字段设置为 null,您应该在两个版本中检查它.事实上 Option 本身并没有给你任何保证。

此外,在并非真正可选的值上使用 Option 确实具有误导性。

我通常只使用 Option 来显式声明一个值可能不存在,这是一个有效的状态。

在与 Java 交互时,我采用以下两种策略,具体取决于我是提供 API 还是使用它:

  1. 如果我提供一个由 Java 代码使用的 API,我不会使用 Option,而是使用一个小的构造函数包装器来检查所有参数是否不为空否则抛出 IllegalArgumentException
  2. 如果我使用用 Java 编写的 API,我使用 Option 包装所有返回值,以便我的 Scala 代码能够以更简洁的方式处理这些情况。

关于scala - 何时在 Scala 中使用 Option,何时不使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33938970/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com