我在Scala中找到了以下语法。我从未见过#
,也找不到有关它的更多信息? #
是什么意思?
case class WithRole(role: Role) extends Authorization[User, DefaultEnv#A]
答案 0 :(得分:1)
它是scala引用类型的方法之一。我引用斯卡拉的深度:
Scala中的类型通过两种机制引用:hash(#)和dot(。) 运营商。点运算符可以被认为对类型执行相同的操作 对象的成员。它指的是在特定对象实例上找到的类型。这是 称为路径依赖型。使用点运算符定义方法时 对于特定类型,该类型绑定到对象的特定实例。这意味着 您不能使用来自同一类的不同对象的类型来满足任何类型 使用点运算符进行的约束。想到这一点的最好方法是有一个 由点运算符连接的特定对象实例的路径。对于变量 匹配您的类型,它必须遵循相同的对象实例路径。你可以看一下考试 - 后来这个。 哈希运算符(#)比点运算符更宽松。它被称为 类型投影,这是一种在不需要的情况下引用嵌套类型的方法 对象实例的路径。这意味着您可以像引用嵌套类型一样引用它 没有嵌套。