为什么Option扩展产品?

时间:2013-03-12 22:01:04

标签: scala scala-option

我必须遗漏一些内容,但我看不到Product课程中productElement特征productArityOption的实施情况。

所以有两个问题:

  1. 为什么Product会延长Option
  2. {{1}}(或其中任何两个子类)没有实现这两种方法怎么可能?

1 个答案:

答案 0 :(得分:7)

在scala中生成Option时,实际上生成的SomeNone都是案例类/对象。 scala编译器使用案例类来实现它,并为它们生成Product方法。

来自Scala 2.10 Product.scala:

/** Base trait for all products, which in the standard library include at
 *  least [[scala.Product1]] through [[scala.Product22]] and therefore also
 *  their subclasses [[scala.Tuple1]] through [[scala.Tuple22]].  In addition,
 *  all case classes implement `Product` with synthetically generated methods.
 *
 *  @author  Burak Emir
 *  @version 1.0
 *  @since   2.3
 */

我希望能回答你的问题,编译魔术!