`class body` }"的语法含义是什么-6ren"> `class body` }"的语法含义是什么-在阅读一些关于 Scala 的文章时,我发现了一些语法奇怪的例子,我可能理解错误 class Child[C // here, what does it mean-6ren">
gpt4 book ai didi

scala - "` 类声明 head` { val_name : Type => `class body` }"的语法含义是什么

转载 作者:行者123 更新时间:2023-12-04 10:10:59 26 4
gpt4 key购买 nike

在阅读一些关于 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]

我发现了具有特征的类似例子。

是否意味着我声明 this类范围内的对象按 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 .
满足该要求, Foo可以创建实例。
此外,定义一个新类(在本例中为 Bar )还要求它是 Baz以及。

看:
http://www.scala-lang.org/node/124

关于scala - "` 类声明 head` { val_name : Type => `class body` }"的语法含义是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8031596/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com