问题标签 [traits]

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 回答
1265 浏览

scala - Scala trait 和 C++ 概念之间的区别

Scala trait Haskell 类型类和 C++0x 概念有什么区别?

就像下面这个例子中 Observer 声明一个抽象成员 receiveUpdate Observer 实际上是一个“匿名”类型或结构类型。

0 投票
4 回答
342 浏览

scala - 算法混合

我有一个扩展迭代器并为复杂算法(MyAlgorithm1)建模的类。这样,算法就可以通过Next方法一步步推进。

现在我想在第一个算法的每次传递中应用不同的算法(MyAlgorithm2)。应该插入算法1和2的迭代

我怎样才能以最好的方式做到这一点?也许有一些特质?

更新:

MyAlgorithm2 接收一个集合并对其进行转换。MyAlgorithm1 也是如此,但这更复杂,需要逐步运行。这个想法是运行 MyAlgoirthm1 的一步,然后运行 ​​MyAlgorithm2。下一步相同。确实,MyAlgorithm2 简化了集合,并且可能有助于简化 MyAlgorithm1 的工作。

0 投票
2 回答
268 浏览

scala - 关于特质的问题

以下两者有什么区别?

1#

2#

A抽象类在哪里。

>> 编辑:

请针对以下Duck具有可插拔飞行和呱呱声行为的 s 示例进行说明:

输出:

我可以飞!:D
<< 沉默>>

0 投票
2 回答
711 浏览

c++ - C++ 提升模板参数特征

我相信我在 boost 中看到了恢复模板模板参数的宏,例如:

有没有这样的,还是我错了?

谢谢

0 投票
3 回答
3042 浏览

scala - 实现具有特征、编译器行为不一致的抽象方法?

我有一个来自 Java 库的基类,我无法修改其代码。这个类(A)有一个空方法(b),它应该被声明为抽象:

我在 Scala 中扩展了这个类并重写了该方法以使其抽象:

现在我在一个特征中实现这个方法:

如果我用特征 B 扩展 AA,我会得到一个错误:覆盖类型 A 中的方法 b => Unit; 类型 => 单元的特征 B 中的方法 b 需要 `override' 修饰符:

相反,如果代码是这样的,所有的东西都编译没有错误,这对我来说似乎有点矛盾:

我正在运行 Scala 2.8.0RC3,并且对这种语言完全陌生(3 天)。另一个奇怪且相关的行为是在使 b 抽象时不需要覆盖标签:

0 投票
1 回答
117 浏览

smalltalk - 使用 Traits,我应该使用 T 前缀,如果是,则将其放在任何其他前缀之前或之后?

在 Pharo+Squeak 中创建 Traits 时,是否适合使用 T 前缀,如 TMyTrait,如果是,T 应该放在任何其他前缀之前,如 TMPMyTrait(其中“MP”是另一个前缀),还是之后,如 MPTMyTrait

0 投票
2 回答
901 浏览

smalltalk - 特质是好是坏?

这是一个开放式问题,但我想征求 SO 社区关于 Traits 的一些意见;你认为 Squeak/Pharo 中的 Traits 是一件好事,还是应该远离它们而使用组合和委托?我问是因为虽然我知道如何使用它们(感谢 Pharo 的书),但我不确定使用它们的可接受程度,或者在哪里可以使用它们,在哪里不可以。

0 投票
2 回答
8829 浏览

scala - 如何在 scala 的泛型方法中创建特征的实例?

我正在尝试使用此方法创建特征的实例

这很好用,但我想将此创建移到生成器函数中,即。

我显然需要清单以某种方式修复类型擦除问题,但在我开始之前,我遇到了 2 个问题:

  1. 即使有一个隐含的清单,Scala 仍然要求 T 是一个特征。如何为 create[T] 添加限制以使 T 成为特征?

  2. 如果我选择使用 Class.newInstance 方法动态创建实例而不是使用“new”,我将如何在“new Object with T”中指定“with”?是否可以在运行时动态创建新的具体 mixin 类型?

0 投票
2 回答
713 浏览

python - Python:元类一路向下

我有一个涉及 Python 元类的深奥问题。我正在为 Web 服务器端代码创建一个 Python 包,这将使通过客户端代理访问任意 Python 类变得容易。我的代理生成代码需要一个包含我想要包含在我的 API 中的所有 Python 类的目录。为了创建这个目录,我使用__metaclass__特殊属性在类创建过程中加入了一个钩子。具体来说,“已发布”API 中的所有类都将子类化一个特定的基类 ,PythonDirectPublic该基类本身具有一个__metaclass__已设置为记录有关类创建信息的类。

到现在为止还挺好。变得复杂的地方是我希望我PythonDirectPublic自己从第三方类(enthought.traits.api.HasTraits)继承。这个第三方类使用__metaclass__.

那么管理两个元类的正确方法是什么?我的元类应该是 Enthought 元类的子类吗?或者我应该只是在我的元类方法中调用 Enthought 的元类__new__来获取我将返回的类型对象?还是在这种特殊情况下可以使用其他一些神秘的咒语?

0 投票
4 回答
1257 浏览

scala - 在工厂中使用特征

我目前正在发现 scala,我想知道是否可以在工厂中使用特征。

我试过这个:

我想这是因为with必须在前面加上new.

那么有没有办法做到这一点?

谢谢