gpt4 book ai didi

scala - 为什么 T 是扩展类型指示符 C.this.type#T 中 this.type 的类型投影

转载 作者:行者123 更新时间:2023-12-04 02:32:43 25 4
gpt4 key购买 nike

SLS 3.2.5 Type Designators表示

trait C {
type T
val x: T
}

扩展为

trait C {
type T
val x: C.this.type#T
}

我熟悉单例类型中的 .type 表示法,但我不确定它如何转换为 C.this.type#T。例如。 this.type 部分试图通过 C#T 传达什么?

最佳答案

在 Scala 规范中,主要概念是类型投影而不是路径相关类型。

路径相关类型是根据类型投影(和单例类型)定义的。

例如对于 val c: C 类型 c.T 根据定义是 c.type#T

c.x 的类型为 c.T 又名 c.type#T

Inside trait C 这种类型(当实例 c 不固定时)可以称为 T 又名 this.T 又名 this.type#T 又名 C.this.T 又名 C.this.type#T

关于scala - 为什么 T 是扩展类型指示符 C.this.type#T 中 this.type 的类型投影,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63215423/

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