问题标签 [self-type]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1242 浏览

scala - 具有另一个类的自我类型的类有意义吗?

ClassB将 self 类型设置为 class A,因此 class B(或其子类)必须扩展 classA以创建B. 但这有可能吗,因为一个子类B只能扩展一个类(这是 class B)?

所以这让我想到一个问题,在任何情况下将一个类的 self 类型声明给另一个类是否有意义?

0 投票
3 回答
1522 浏览

scala - self 类型中 `=>` 背后的原因是什么?

self 类型类似于以下示例:

这就是说,那个 trait A(或者它的一个子类型)必须继承 class String

关键字self后跟:一个变量 in 的类比var s: String,类型在后面:

但是=>自我类型中的状态是什么?这背后的原因是什么?

0 投票
1 回答
179 浏览

design-patterns - Scala 对奇怪重复的泛型模式的扩展

在询问/编辑这个问题时,我注意到您可以这样做以完全静态安全地实现原始“奇怪重复的模板/通用模式”的要点:

这似乎让您消除了隐式转换和 Scala 的 ad-hoc 类型类模式的主要需求之一,因为 self-type 消除了声明的能力

和类似的事情,这是我所知道的原始模式的唯一问题。有什么我错过的吗?为什么不是每个人(在 Scala 中)都开始使用它?

0 投票
3 回答
230 浏览

scala - MyType 类型不匹配

我在这里借用了Landei 的 MyType 技巧。但是最近我遇到了 self 类型的问题。一个例子说明了我的意思:

据我所知,问题似乎是该spitAt方法中的下划线最终会产生一个Anyfor a.SELF。但是我怎样才能使这段代码工作呢?
我也试过这个:

但是推断的类型参数不符合方法 spitAt 的类型参数边界,这对我来说很清楚,因为SELF元素的类型参数animals至少有边界_ >: Cat with Dog <: Quadruped[_]不符合a.SELF,AspitAt上面甚至AspitAt下面:

那么spitAt使for-loop 行工作的方法的正确签名是什么?
也许 SELF 类型参数的方差注释 ( +SELF) 可能会有所帮助,但我不知道如何。

0 投票
1 回答
123 浏览

scala - 自类型不能访问类型成员

给定一个带有类型参数的特征和一个带有抽象类型成员的特征:

是否有任何更改可以使以下任何一项工作:

0 投票
3 回答
270 浏览

scala - 蛋糕模式,自我:UserRepositoryComponent =>

我试图了解蛋糕的图案。

我找到了这个要点: https ://gist.github.com/2127745

但我不明白这种语法:

有人可以解释一下吗?

0 投票
1 回答
284 浏览

scala - scala嵌套自我类型

为什么这不起作用:

我希望混入 Y 中的 A 再次混入 Y 中 Z 的实例中。我该怎么做?

编辑(在上面的例子中试图过于简短。这是我的实际问题):

我想我理解为什么不能编译,但这不应该是隐式的(不是实际的 scala 关键字'隐式',只是一般隐式;))?如果一个 ExtendedProfile 总是必须有一个 ExtendedDriver,为什么 new Z() 抱怨它需要一个 ExtendedDriver?

仅供参考:http ://slick.typesafe.com/doc/1.0.0-RC1/api/#scala.slick.driver.ExtendedProfile

0 投票
1 回答
2071 浏览

scala - Scala自类型注释与'with'混合

可能重复:
scala 自类型和特征子类之间有什么区别?

我无法区分以下两个代码块:

我是从设计的角度来问的。

谢谢!

0 投票
4 回答
7259 浏览

scala - Scala:具有具体实例返回类型的实现方法

我需要一种方法来强制抽象类中的方法具有调用它的对象的具体类的返回类型。最常见的例子是copy()方法,我目前正在使用基于抽象类型的方法:

我已经看到了很多方法,包括这个很好的答案中的方法。但是,它们都没有真正强制实现返回自己的类型。例如,以下类将是有效的:

我可以这样做的事实导致,如果我正在复制对象的副本,我拥有的唯一信息是它们属于给定的A's 子类:

有没有更好的、类型安全的方法可以做到这一点?

编辑:如果可能的话,我想保留创建抽象类的任意深度层次结构的能力。也就是说,在前面的示例中,我希望能够创建一个扩展的抽象类,然后继续创建具体的子类。但是,如果这简化了问题(就像抽象类型的情况一样),我不需要进一步扩展已经具体的类。A2AA2

0 投票
0 回答
62 浏览

function - 带有依赖项的自我类型注释:如何访问内部方法

现在,我想将我的 DatabaseConnection 拆分为具有自己准备好的语句等的“设备”。Connection不过,它们都应该引用这个实例。我希望能够从外部调用内部函数。

无需重命名任何这些功能的最佳方法是什么?

顺便说一句,对于短文本,我的手在自动取款机上是真的被禁用了。