gpt4 book ai didi

scala - 为什么选择带有散列而不是点的 Scala 类型成员?

转载 作者:行者123 更新时间:2023-12-03 08:29:09 24 4
gpt4 key购买 nike

在 Scala 中,从类中选择类型的语法与从类中选择任何其他类型的语法不同。因为前者使用散列作为选择运算符而不是点。这是为什么?

示例:如果我们有一个这样的类......

class Example {
type Foo = String
}

为什么我们从类中选择这样的类型......
val example:Example#Foo = "1"

而不是这样?
val example:Example.Foo = "1"

最佳答案

Example#Foo称为类型投影,将匹配任何类型 Foo类型为 Example 的任何封闭实例的.如果你写一个类型 Example.Foo ,编译器将查找名为 Example 的值(而不是类型)并将引用其随附的 Foo仅键入。这通常用于单例对象的上下文中。

例如:

object MyEnum extends Enumeration {
val EnumValue = Value
}

val e: MyEnum.Value = MyEnum.EnumValue

如果使用 Scala .对于类型投影,这会导致混淆,因为前面的标识符可以解释为类型或值……因此 # .请注意,正如@kassens 所写,Java 在这方面只有类型投影。

关于scala - 为什么选择带有散列而不是点的 Scala 类型成员?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6676048/

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