traits相关内容

设置属性时如何避免循环依赖?

这是一个设计原则问题,适用于处理数学/物理方程的课程,其中允许用户设置计算剩余部分的任何参数.在这个例子中,我希望能够在避免循环依赖的同时设置频率. 例如: from traits.api import HasTraits, Float, Property从 scipy.constants 导入 c, h光子类(HasTraits):波长=浮点数#想做属性,但那会是循环的?频率 = 属性( ..
发布时间:2021-09-09 19:03:40 Python

如何在一个班级中多次使用一个特征?

以下代码: trait T {函数 foo() {}}C类{使用 T { T::foo 作为栏;}使用 T { T::foo 作为 baz;}} 产生以下错误: Trait 方法 bar 没有被应用,因为有碰撞与 C 上的其他 trait 方法 可以在一个班级中两次使用一个特征吗? 解决方案 要多次“导入"在 trait 中定义的具有不同名称的方法,请执行以下操作: cl ..
发布时间:2021-09-09 19:03:36 PHP

什么时候只需要 PartialEq 而不是 Eq 合适?

我正在阅读 Rust 书并尝试了解 PartialEq 和 Eq 特征的用例. 我意识到 PartialEq 用于不一定是自反的关系(即可以有这样的 x 使得 x != x)和Eq 是一个标记特征,表示该关系也是自反的(现在它是一个适当的等价关系). 书中给出了一个例子,其中 PartialEq 是不够的,而 Eq 是必需的:HashMap 查找.事实上,如果我们使用只实现 Parti ..
发布时间:2021-09-09 19:03:33 其他开发

为什么具有泛型类型参数的 trait 方法是对象不安全的?

引用本书(强调我的), 当使用 trait 时,用具体类型参数填充的泛型类型参数也是如此:具体类型成为实现 trait 的类型的一部分.当通过使用 trait 对象忘记类型时,无法知道用什么类型填充泛型类型参数. 我无法理解其中的原理.对于一个具体的例子,请考虑以下 pub trait Echoer {fn echo (&self, v: T) ->;}酒吧结构 Foo { } ..
发布时间:2021-09-09 19:03:30 其他开发

Javascript 特性模式资源

有人可以推荐在 javascript 中使用特征的好资源吗?经过一番搜索,我主要找到关于提供特征功能的库的文章,但我对如何在没有库的情况下实现特征的最佳实践感到好奇. 我在 SO 上看到了这篇文章,还有其他方法吗?javascript 中的特征 也欢迎任何真实世界的例子. 谢谢. 解决方案 我会建议一些简单的,大致如下: 让特征定义为标准的 JavaScript 对 ..
发布时间:2021-09-09 19:03:25 前端开发

为什么编译器声称来自更高等级特征绑定的关联类型没有实现 `Display`,即使它应该实现?

我正在构建一个实现字符串连接的库;也就是说,打印由分隔符分隔的容器的所有元素.我的基本设计如下: 使用 std::fmt;#[派生(调试,克隆,PartialEq,Eq)]pub struct Join{容器:容器,九月:九月,}implfmt::显示用于加入在哪里对于&'a 容器:IntoIterator,对于 ..
发布时间:2021-09-09 19:03:18 其他开发

为什么是“抽象覆盖"?不需要“覆盖"独自在亚底?

我阅读了 Scala 编程的部分,其中 abstract override 是介绍,但我仍然对这些修饰符的加入究竟意味着什么感到困惑.使用这些修饰符的代码片段粘贴在下面: trait 加倍扩展 IntQueue {抽象覆盖 def put(x: Int) { super.put(2 * x) }} 特别是,在这种情况下,我对 abstract 的目的感到困惑,以及为什么我们不能简单地使用 ov ..
发布时间:2021-09-09 19:03:15 其他开发

如何从特征对象获取对具体类型的引用?

我如何从 aBox 或 &B 或 &Box/code> 此代码中的变量: trait A {}结构 B;impl A for B {}fn 主(){让 mut a: Box= 盒子::新(B);令b=a作为Box;} 此代码返回错误: error[E0605]:非原始类型转换:`std::boxed::Box` as `std::boxed::Box;`-->src ..
发布时间:2021-09-09 19:03:11 其他开发

为什么在将特征作为函数参数传递时需要 `impl`?

在下面的将trait作为参数传递的例子中,在函数签名中发送impl有什么需要? 我知道 trait 是更通用的类型而不是具体类型,但是由于 Rust 编译器不允许跨结构和特征共享名称,为什么需要在函数中提供 impl签名来表示类型? pub fn notify(item: impl Summary) {println!("突发新闻!{}", item.summarize());} 文档提 ..
发布时间:2021-09-03 20:34:04 其他开发

对结构的复杂特征要求

我设置了一个相当复杂的特征,但我在整理这些部分时遇到了麻烦.现在大概是这样的: ////可以进行梯度优化的模型的特征.酒吧特质可优化{类型数据;类型目标;//合同//}///优化算法的特征.pub trait OptimAlg​​orithm{//合同//} 现在我希望能够允许实现 OptimAlg​​orithm 的结构成为实现 Optimizable 的结构中的一个字段.这看起来像这样: ..
发布时间:2021-08-31 19:14:59 其他开发

Scala - trait 成员初始化:使用 trait 修改类成员

可能标题不太清楚.这是我的问题. 假设我有一个特性,它定义了一个具有一系列配置参数的应用程序.这些参数包含在 Map 中,其中一些具有默认值. trait ConfApp {val dbName: 字符串懒 val conf: scala.collection.mutable.Map[String, Any] = scala.collection.mutable.Map("db" -> d ..
发布时间:2021-07-15 21:20:33 其他开发

如何获取在指定类中混合的特征列表?

更具体的例子: 抽象特征A特质 B 扩展了 A特质 C 扩展了 A 如何检查扩展 trait A(它可以是 0 到多个)的 trait 混合在指定的类中? 解决方案 其他答案的混合怎么样 abstract trait A//对这个感兴趣trait B extends A//还有这个trait C extends A//这个也是trait D//虽然不关心这个val x = 带有 B ..
发布时间:2021-07-15 21:13:55 其他开发

Scala trait mixin 中的方法调用顺序

我的程序结构如下: 抽象类 IntQueue {def get(): 整数def put(x: Int)}特质加倍扩展了 IntQueue{抽象覆盖 def put(x: Int) {println(“在加倍放")super.put(2*x)}}trait Incrementing extends IntQueue {抽象覆盖 def put(x: Int) {println(“在增量中")su ..
发布时间:2021-07-15 21:11:58 其他开发

将特征限制为对象?

有没有办法限制一个特征,使其只能混合到对象中?例如 trait OnlyForObjects {这:... =>}object Foo extends OnlyForObjects//-->好的class Bar extends OnlyForObjects//-->编译错误 解决方案 是的!有一个晦涩难懂且几乎没有记录的 scala.Singleton: scala>trait Only ..
发布时间:2021-07-15 21:07:29 其他开发

了解 Scala Ordered[] trait 来比较参考

目前,我正在学习 Scala,现在,我在理解 Ordered traits to compare object 时遇到了一些困惑. 考虑下面的例子,这是我目前对比较的理解, 案例一,class Example(var n: Int) extends Ordered[Example] {//...def compare(that: Example) =(this.n) - (that.n)} ..
发布时间:2021-07-15 21:04:43 其他开发

扩展内置集合,内置方法问题

我是 Scala 新手,所以如果这是一个愚蠢的问题,请原谅我,但是这里... 想象一下,我希望创建一个包含其他方法的扩展 Map 类型.我可以看到几种方法来做到这一点.第一个是组合: class Path[V](val m: Map[V, Int]) {//定义我的方法} 另一个是通过继承,例如 class Path[V] extends Map[V, Int] {//定义我的方法} ..
发布时间:2021-07-15 20:56:26 其他开发

当在 2.9.0-1 但不是 2.8.1 中的具体类中混合时,trait 中的方法变成了 volatile 方法

我注意到 2.9.0-1 中的这一重大变化(对我来说与 OGNL 一起使用): 我发现,在 2.9 中,在 trait 中声明的方法在混入类中时会变得不稳定: 2.9.0-1 中的例子 import java.lang.reflect.Modifier特质 SuperTrait {def getKnoll = "Kanutten"}类 KlassWithKnoll 扩展了 Super ..
发布时间:2021-07-15 20:50:48 其他开发