Scala 将特定成员变量设置为空

Scala Setting Specific Member Variables to Null

我有一个 class 类似于以下内容:

class Cat(
   val whiskers: Vector[Whiskers],
   val tail: hasTail,
   val ears: hasEars)

我还有一个函数可以根据文件的内容初始化这些值:

val whiskers = initWhiskers()
val cat = new Cat(whiskers = whiskers, tail = initTail(), ears = initEars())

我的问题是:在某些情况下,存在没有尾巴或耳朵的猫。我如何通过允许我的一些猫 objects 没有耳朵而其他猫有耳朵来解释这种情况?

澄清一下:

val cat = new Cat(whiskers = whiskers, tail = null, ears = null)
val cat = new Cat(whiskers = whiskers, tail = initTail(), ears = null)
val cat = new Cat(whiskers = whiskers, tail = initTail(), ears = initEars())

我希望以上三种可能性都成为选项。这完全取决于我正在解析的文件是否有耳朵或尾巴等

我尝试过的:

将值设置为空(非常不成功)。 使所有成员变量成为选项(这似乎是 long-winded 再次获取空值的方法)。

还有其他选项吗?

谢谢!

在 Scala 中,我们使用 Option monad 来包装可以为 null 的东西。

class Cat(
  val whiskers: Vector[Whiskers],
  val tail: Option[hasTail],
  val ears: Option[hasEars]
)

val cat1 = new Cat(whiskers = whiskers, tail = None, ears = None)

val cat2 = new Cat(whiskers = whiskers, tail = Option(initTail()), ears = Option(initEars() )