相关疑难解决方法(0)

意外的特质行为

给出一个简单的代数数据类型Parent:

scala> sealed trait Parent
defined trait Parent

scala> case object Boy extends Parent
defined object Boy

scala> case object Girl extends Parent
defined object Girl
Run Code Online (Sandbox Code Playgroud)

我定义了一个特征:

scala> trait HasGirl { 
     |   val x: Girl.type
     | }
defined trait HasGirl
Run Code Online (Sandbox Code Playgroud)

然后,我创建了一个实现的case类HasGirl,但提供了一个xBoy.type.

scala> case class Thing(x: Boy.type) extends HasGirl
defined class Thing
Run Code Online (Sandbox Code Playgroud)

我曾预料到编译时错误,因为我没有看到x类型是如何Boy.type符合的val x: Girl.type.

这里发生了什么?

scala traits

18
推荐指数
1
解决办法
248
查看次数

标签 统计

scala ×1

traits ×1