self-type相关内容

与“this"没有类型/差异的显式自引用

我了解明确输入的自引用的用法: trait T {自我:T2 =>...} 在正文中,self 是this 的别名,但具有更精确的类型T with T2. 现在,我已经在代码中看到了这一点: trait T {自我=>...} 也就是说,一个没有附加类型信息的显式自引用.在这种配置中,是否存在 self 不仅仅是 this 的别名的情况? 解决方案 它是 this 的别名. ..
发布时间:2021-12-07 13:24:13 其他开发

自我类型和特质子类有什么区别?

特征的自类型A: 特性B特性 A { 这个:B =>} 说"A不能混合到一个不扩展B"的具体类中. 另一方面,以下内容: 特性B特质 A 延伸 B 说“A 中混合的任何(具体或抽象)类也将混合在 B 中". 这两个陈述不是一个意思吗?self 类型似乎只是为了创造一个简单的编译时错误的可能性. 我错过了什么? 解决方案 主要用于依赖注入,例如在蛋糕模式中.有一篇很 ..
发布时间:2021-12-07 12:36:11 其他开发

具有更高种类类型的类的自类型注释

给定: 抽象类数据库[F[_]] 我怎样才能使这个特性起作用: //标记特征表明数据库插件支持StaticRolestrait StaticRoles { this: Databases[_] =>} 我想确保 StaticRoles 只混合在扩展 Databases 的类中,但是我不关心类型参数 的具体值>F. 代码返回: 错误:_$1 没有类型参数,预期:1 这是公平的,但它 ..
发布时间:2021-07-15 20:57:50 其他开发

Scala:自我类型注释

(试图通过探测边界来了解自身类型的使用.) 这不能实例化(D和String是类,但是必须混用其中之一.加上String是最终的.).但是还有其他用途吗? class D { foo: String => def f2 = foo.substring(1) } 更新:对不起,我似乎不善于提问. 我想知道的是这种奇怪的特殊情况是否有意义. D类永远无法实例化的情况 ..
发布时间:2020-07-25 02:18:34 其他开发

Scala self-type:类型参数错误的成员

这是此问题的后续行动../p> 为什么此代码无法编译,我该如何解决? trait Vec[V] { self:V => def -(v:V):V def dot(v:V):Double def norm:Double = math.sqrt(this dot this) def dist(v:V):Double = (this - v).norm } 错误是: ..
发布时间:2020-07-25 02:18:27 其他开发

Scala自我类型:值不是成员错误

这是此问题的后续操作./p> 我正在尝试使用自类型的通用超类在scala中实现向量: trait Vec[V] { self:V => def /(d:Double):Vec[V] def dot(v:V):Double def norm:Double = math.sqrt(this dot this) def normalize = self / norm } ..
发布时间:2020-07-25 02:17:08 其他开发

Scala自我类型可以强制案例类类型吗

在scala中,有没有办法将特征的自身类型定义为案例类,例如“任何案例类"?我希望自类型能够使用案例类的.copy方法,并强制其自身类型为 some 案例类,而不是常规类.我认为结构性类型无济于事,因为它们需要包含特定参数的签名(对于任何案例类,我可能一般都不能使用结构性类型). 请放弃“如果您需要做某些错误的事情",因为我已经讲过,但是我的api设计-如果可以的话,将会变得很笨拙.我也很好 ..
发布时间:2020-07-25 02:17:06 其他开发

特质继承和自我类型注释之间的区别

在Scala中,我已经看到了结构 trait T extends S 和 trait T { this: S => 用于实现类似的目的(即,必须在创建实例之前定义S中的抽象方法).它们之间有什么区别?为什么您要在另一个上使用? 解决方案 我将使用自类型进行依赖项管理:此特征需要混入另一个特征.我将使用继承来完善另一个特征或界面. 仅作为示例: trait F ..
发布时间:2020-07-25 02:16:04 其他开发

明确的自我参照,与"this"没有类型/差异

我了解明确键入自引用的用法: trait T { self : T2 => ... } 在主体中,self是this的别名,但具有更精确的类型T with T2. 现在,我已经在代码中看到了这一点: trait T { self => ... } 也就是说,没有其他类型信息的显式自我引用.在这种配置下,是否存在self不仅仅是this的别名的情况? ..
发布时间:2020-07-25 02:15:01 其他开发

自我类型和特征子类之间有什么区别?

特质A的自类型: trait B trait A { this: B => } 说"A不能混入不扩展B" 的具体类中. 另一方面,以下内容: trait B trait A extends B 说“在A中混合的任何(具体或抽象的)类也将在B中混合". 这两个语句不是同一回事吗?自类型似乎仅用于创建简单的编译时错误. 我想念什么? 解决方案 主要用于依赖 ..
发布时间:2020-07-25 02:12:55 其他开发

什么是Scala惯用语:特质TraitA扩展TraitB或特质TraitA {self:TraitB => }

除了继承方面,以下类模板之间是否存在差异: 1 |特质TraitA扩展TraitB 2 |特质TraitA {self:TraitB => } 我想在 TraitA 和 TraitB 但前者在没有后者的情况下无法运作。 您如何表达此意图? 对我而言,解决方案[2]将是更自然的方法。但是我不想把实施者的负担混合在一起需要混合的东西。 解决方案 我 ..
发布时间:2018-08-03 15:19:41 其他开发