特质的自我类型A:
trait B
trait A { this: B => }
Run Code Online (Sandbox Code Playgroud)
说" A不能混合成一个不会扩展的具体类B".
另一方面,以下内容:
trait B
trait A extends B
Run Code Online (Sandbox Code Playgroud)
说"混合的任何(混凝土或抽象)类A也将在B中混合".
这两个陈述不是同一个意思吗?自我类型似乎只是为了创建一个简单的编译时错误的可能性.
我错过了什么?
我和我的同事对以下代码的行为感到有点困惑.
def a: String = {
None.foreach(return "1")
return "2"
}
def b: String = {
None.foreach(x => return "1")
return "2"
}
Run Code Online (Sandbox Code Playgroud)
正如所料,调用b确实返回"2".但是,调用a返回"1".何时执行return "1"时正在评估a?