问题标签 [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.
scala - 限制可以扩展 Scala 特征的类
似乎有三种(或更多)方法可以限制哪些类可以混合给定的 scala 特征:
- 使用共同祖先[特质]
- 使用抽象声明
- 在特质中使用自我类型
共同祖先方法需要额外的限制,而且似乎不是最理想的。同时,自键入和抽象声明似乎是相同的。有人愿意解释差异和用例(尤其是在 2 和 3 之间)吗?
我的例子是:
scala - 在 Scala 中使用 self-type 时如何保持单一职责?
使用 self-type 进行依赖注入,导致暴露其他 trait 的 public 方法,破坏了单一职责主体。让我用例子来说话
我的Sample
班级依赖于Output
特质,当然我想在我的班级中使用Output
特质方法。Sample
但是通过上面的代码示例,我的Sample
类公开output
了并非来自其功能的方法并打破了Sample
.
我怎样才能避免它并继续使用自我类型和蛋糕模式?
scala - 自类型`this:T =>`和`this:T`有什么区别?
Scala (2.12.8) 之间的自类型
和这个
语义上有什么区别?
换句话说,this: Any
(在第二个片段中)的目的是什么?
我希望编译器在编译第二个代码片段时大喊我不应该声明this
,但我收到了这个警告:
scala - 从受自我类型约束的多个特征中定义一个特征
我有两个abstract class
如下所示:
如您所见,mixin 部分看起来相同。我的问题是,如何抽象 mixin 部分,当我添加更多特征时,它适用于BddAsyncSpec
and BddSpec
。
scala - 如何在scala中动态处理自类型注释
我正在尝试将蛋糕图案用于我的项目。哪个工作正常。
这是一个伪代码。
所以问题就在这里,来自本地 DBSource 的数据被读取两次(一次在FilterWhilteSpaceForDB
,第二次在MaskPasswordForDB
)。我们可以创建一个LocalDBSource
可以在两者中使用的实例或解决我的Source
自类型注释依赖关系吗?
scala - 如何让特征在scala中使用`this`构造函数?
[编辑更新] 这是对我的问题的正确陈述。
我希望在 a 中调用构造函数trait
。但似乎我必须使用apply
功能。它是否存在像 new this() 这样的用法?
就像下面的代码。它抛出类型不匹配。我希望添加构造函数的约束,或者我必须使用apply
函数。
rust - 为什么在具体实现中使用 Self 而不是类型的名称?
的文档Add
给出了以下示例:
为什么文档的作者在Self
这里使用,而不是按名称提及Point
?有技术上的区别,还是纯粹为了风格点?
scala - 具有更高种类类型的类的自类型注释
鉴于:
我怎样才能使这个特征起作用:
我想确保StaticRoles
只混入也扩展的类中Databases
,但是我不关心类型参数的具体值F
。
代码返回:
这是公平的,但是它返回相同的错误:
我也试过:
这给出了错误:
java - 如何避免抽象类向下转换为子类?
我的 android 应用程序中有以下结构:
现在,在 MainActivity 中初始化 BaseViewModel 时,我想将类型输入为泛型,因此我不必每次都将其强制转换为子实现((MainActivityViewModel)mViewModel)
,我已经阅读了有关泛型自键入的信息,但不明白它在这个确切的场景中是如何工作的.
java - maven中的编译错误,但在eclipse中的self类型没有
我正在尝试创建一些java SELF 类型
这是什么原因
- 一切都在eclipse中完美编译
maven 编译时出现以下错误
Foo 和 FooLike 类型不兼容;都定义了existing(),但返回类型不相关
细节
Maven&Java 版本: 日食版本:考试
这在eclipse中编译但不在maven中。
接口 Foo 和 Bar 是公共 API 的一部分,FooLike 是内部的。
更新
将以下实现添加到 Bar 也将允许在 maven 中进行编译