scala – “`class declaration head` {val_name:Type =>`c
发布时间:2020-12-16 19:18:46 所属栏目:安全 来源:网络整理
导读:在阅读一些关于 Scala的文章时,我发现了一些带有好奇语法的例子,我可能会错误地理解它 ???? class Child[C : Child[C]] { some_name : C = // here,what does it mean? var roomie : Option[C] = None def roomWith(aChild : C)= { roomie = Some(aChild) aC
在阅读一些关于
Scala的文章时,我发现了一些带有好奇语法的例子,我可能会错误地理解它
???? class Child[C <: Child[C]] { some_name : C => // here,what does it mean? var roomie : Option[C] = None def roomWith(aChild : C)= { roomie = Some(aChild) aChild.roomie = Some(this) } } class Boy extends Child[Boy] 我找到了类似特征的例子. 这是否意味着我在类范围内将此对象声明为C类型? 解决方法
它是一种自我类型的注释.
这意味着类Child必须是C类,即创建必须满足给定类的继承依赖项. 一个小例子: scala> trait Baz defined trait Baz scala> class Foo { | self:Baz => | } defined class Foo scala> val a = new Foo <console>:9: error: class Foo cannot be instantiated because it does not conform to its self-type Foo with Baz val a = new Foo ^ scala> val a = new Foo with Baz a: Foo with Baz = $anon$1@199de181 scala> class Bar extends Foo with Baz defined class Bar 在这种情况下,Foo也需要是Baz. 看到: (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |