问题标签 [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 投票
4 回答
1878 浏览

c++ - 如何从 C++ 模板中的方法类型推断类类型?

在如下所示的模板中,我希望调用Run(&Base::foo)成功而不需要两次命名 Base 类型(就像在编译Run<Base>(&Base::foo)调用中所做的那样)。我可以拥有吗?可能不添加大量Boost标头?

使用提供的代码,我收到以下错误:

(您可以在http://ideone.com/8NZkq上修改片段):

0 投票
2 回答
1928 浏览

scala - Scala 特征/蛋糕模式与案例类

在我的 Web 应用程序中,授权用户至少有 4 个“方面”:http 会话相关数据、持久数据、facebook 数据、运行时业务数据。

我决定使用案例类组合而不是特征至少有两个原因:

  • 特征混合可能导致名称冲突
  • 我想要免费的案例类好东西,比如模式匹配和复制方法

我想知道有经验的 scalaists 对此主题的看法。看起来特征和/或蛋糕模式应该适合此类任务,但正如我上面提到的那样存在问题......很明显,我不仅想快速轻松地实现它,而且还想深入理解它以供使用在未来。

那么我的决定是否有任何缺陷和误解,或者是否正确?相关代码如下所示:

0 投票
5 回答
25504 浏览

scala - 如何将特征混合到实例中?

给定一个特征MyTrait

它可以与extendsor混合到一个类中with

它也可以在实例化新实例时混合:

但是......可以将特征(或任何其他特征,如果这会产生影响)添加到现有实例中吗?

我正在使用 Java 中的 JPA 加载对象,并且我想使用特征向它们添加一些功能。有可能吗?

我希望能够混合如下特征:

0 投票
1 回答
583 浏览

python - 仅使用特征的 python 实时 gui

是否可以使用 python 的特征创建一个 ui 来为元胞自动机模拟创建接口?

0 投票
1 回答
286 浏览

c++ - 指定具有特征的模板化类

我有一个struct表示特征的:

我可以用一个类来专门化它,因此:

FooTraits但是,如果我希望专门研究的类也被模板化,则目前我无法使用,因此:

我应该如何表达这最后一段代码,所以任何Fruit< T >s_implementsFoo = true

目前报告以下错误:

0 投票
1 回答
513 浏览

perl - 是否可以使用 Moose/MooseX::Declare for Perl 自动强制传递给委托方法的参数(来自 Array 特征)?

我正在创建一个包含 IP 地址列表的类,作为 Net::IP 对象。

我已将 Net::IP 对象包装为子类型 (IPAddress),并定义了从字符串到 IPAddress 的强制转换。然后,我向名为 ip_list 的类添加了一个属性,类型为 ArrayRef[IPAddress],并委托给Array trait的push方法。

但是,如果我尝试像这样调用委托方法:

我收到错误“值 SCALAR(0x8017e8) 未通过容器类型约束‘IPAddress’...”

所以显然 add_ip 的参数没有被强制。

是否可以做我正在尝试的事情,或者我应该手动完成所有这些?我已经浏览了 Moose 手册,但我没有看到任何可以表明这两种方式的东西,但我可能遗漏了一些东西。

0 投票
2 回答
29753 浏览

c++ - 特征类是如何工作的,它们是做什么的?

我正在阅读 Scott Meyers 的Effective C++。他在谈论特征类,我知道我需要它们在编译时确定对象的类型,但我无法理解他对这些类实际上做什么的解释?(从技术角度)

0 投票
6 回答
387 浏览

scala - 通过使用特征和 with-keyword 减少代码

我有一些具有相同超类型的类。因此,所有这些类都必须覆盖相同的方法。现在我可以调用一个方法并将它提交为一个普通超类型的对象。但是对每个提交的类型做出反应并不总是有用的,因此会引发异常。首先,我尝试像这样解决这种行为:

由于有很多子类型,这将导致大量代码(在每个方法和每个类中),我试图用traits. 每个特征应该只测试一种类型,然后将对象转发到堆栈上更高的方法。下面的代码描述了我的想象。但这不起作用,因为编译器无法分解类型。另一个问题是我必须在每个行为类中声明类的每个属性。

有人可以告诉我是否可以通过使用特征来减少代码行?还是我目前使用的最好的全匹配解决方案?

编辑:

在您的帮助下,我找到了一个半有效的解决方案。我的主要问题是我试图通过使用 Scala 功能来减少代码行数。所以我忽略了最简单的方法:外包代码!我只需要创建一个检查对象组合的新对象。对象本身只处理它们自己的类型。

这是代码:

我稍微扩展了代码并插入了对象NumHolder。现在,只有一个小缺陷:在 NumHolder 中,如果在 add-method 中出现编译错误,我无法提交超类型。我尝试使用泛型而不是类型关键字,但这并不方便,因为我总是将类型设置为 Num (也在对象操作中)。

我该如何解决这个小的编译错误?

0 投票
1 回答
333 浏览

c++ - clone_ptr 问题,我需要使用库的函数而不是 new 创建一个复制对象

我对 C++ 中的模板有点陌生,所以如果这个问题令人困惑或愚蠢,请原谅我,我只是有一个问题,我想实现一个克隆智能指针,所以我不必为每个类创建复制构造函数使用我的底层 XML 库,它似乎只使用对象指针而不是智能指针。问题是我的特征需要使用底层库中的函数创建新对象,我不知道如何在模板/特征类中执行此操作。我已经在下面发布了所有代码以及一些评论,如果有人可以提供建议,我将不胜感激。

如果有不清楚的地方,请询问,我会尽力澄清。

0 投票
1 回答
401 浏览

perl - 使用 Moose,如何在运行时设置“ro”属性特征的值?

我有一个属性特征,我想在其他类属性的基础上进行设置。我真的想要一个属性特征的默认值,它获取类的副本,$self而不是属性的元数据。我想在我的课堂上做这样的事情:

但是,我想保持我的属性特质RO?这可能吗。我知道 MOP 允许设置类属性的值,但我不知道如何在元属性上设置属性。