假设我有这个ADT:
哪种方法更符合惯用法?在这种情况下(没有额外的方法),使用值类有什么优势吗?
让我们来看一下这个ADT:
case class Person(id: String)
case class Kid(id: String, name: String)
我希望以更明确、类型安全的方式表示 id 字段。我有两个选项:
1. 类型别名
type PersonId = String
case class Person(id: PersonId)
case class Kid(id: String, name: PersonId)
2. 值类型
case class PersonId(id: String) extends AnyVal
case class Person(id: PersonId)
case class Kid(id: String, name: PersonId)
哪种方法更符合惯用法?在这种情况下(没有额外的方法),使用值类有什么优势吗?