Kre*_*ver 3 inheritance scala self-type subtyping
我想知道以下行为背后的原因是什么?
@ trait Bar
defined trait Bar
@ trait Foo { self: Bar => }
defined trait Foo
@ def x: Foo = ???
defined function x
@ val y: Bar = x
cmd3.sc:1: type mismatch;
found : ammonite.$sess.cmd1.Foo
required: ammonite.$sess.cmd0.Bar
val y: Bar = x
^
Compilation Failed
Run Code Online (Sandbox Code Playgroud)
AFAIU,Foo要求其每个子类型都是 的子类型,Bar那么为什么实例Foo不是 的正确实例Bar?
@编辑
只是为了让问题更清楚:我想知道为什么它会这样工作。一些可能的答案是:
Foo而不是Bar运行时类型的实例)似乎至少 1) 有点正确(隐藏子类型作为实现细节)。
| 归档时间: |
|
| 查看次数: |
275 次 |
| 最近记录: |