traits相关内容

如何为结构体的引用实现 Add trait?

我创建了一个两元素 Vector 结构,我想重载 + 运算符. 我让我所有的函数和方法都接受引用,而不是值,并且我希望 + 运算符以相同的方式工作. impl Add for Vector {fn add(&self, other: &Vector) ->向量{向量{x: self.x + other.x,y: self.y + other.y,}}} 根据我尝试的变化,我要么遇到生命周 ..
发布时间:2021-12-25 09:27:20 其他开发

什么使某物成为“特征对象"?

最近的 Rust 更改使“特征对象"对我来说更加突出,但我对真正使某些东西成为特征对象的原因只有模糊的了解.一项特别的变化是 即将到来的变化,以允许 trait 对象将 trait 实现转发到内部类型. 给定一个特征 Foo,我很确定 Box/Box 是一个 trait 对象.&Foo/&dyn Foo 也是 trait 对象吗?其他诸如 Rc 或 Arc 之类的智能指针的东西呢?我怎样才能 ..
发布时间:2021-12-25 09:26:13 其他开发

ES6 类的 Mixin,用 babel 转译

根据各种来源(2ality, esdiscuss) 应该能够将 mixins 添加到类中: EDIT 发现类方法不可枚举,因此无法工作.编辑了下面的代码,但仍然没有快乐 class CartoonCharacter {构造函数(作者){this.author = 作者;}通过绘制() {console.log("绘制者", this.author);}}//这行不通//类方法不可枚举//类 ..
发布时间:2021-12-23 11:44:00 前端开发

Groovy 中@Delegate、@Mixin 和 Traits 的区别?

有人能解释一下我什么时候想使用 Groovy Traits vs. Mixins (@Mixin) vs. Delegates (@Delegate)?也许一些权衡和设计问题会有所帮助. 它们似乎都允许重用多个“类"行为.谢谢.:-) 这个 SO 线程也很有帮助:@Delegate 之间的差异Groovy 中的 @Mixin AST 转换 解决方案 我同意,它们似乎都允许重用多 ..
发布时间:2021-12-22 08:58:22 其他开发

您将如何实现“特质"?C#中的设计模式?

我知道 C# 中不存在该功能,但 PHP 最近添加了一个名为 特质 起初我觉得有点傻,直到我开始考虑它. 假设我有一个名为 Client 的基类.Client 有一个名为 Name 的属性. 现在我正在开发一个可供许多不同客户使用的可重复使用的应用程序.所有客户都同意客户应该有一个名字,因此它在基类中. 现在客户 A 过来说他还需要跟踪客户的体重.客户 B 不需要体重,但他想跟踪 ..

泛型错误:预期类型参数,找到结构

我开始了一个新项目,我希望尽可能模块化,我的意思是我希望将来能够用其他部分替换某些部分.这似乎是 traits 的完美用法,目前我有这个代码: mod 解析器;模组渲染器;模组渲染器;使用解析器::MarkParser;使用渲染器::MarkRenderer;struct Rustmark {解析器:P,渲染器:R,}impl ..
发布时间:2021-12-15 10:16:29 其他开发

Rust 中 trait 的冲突实现

我想为 &'a str 和高达 i32 的整数实现自定义特征,但 Rust 不允许我: 使用 std::convert::Into;酒吧特质 UiId {fn push(&self);}impl'a>&'a str { 的 UiIdfn push(&self) {}}implT { 的 UiIdfn push(&self) {}}fn main() {} 编译失败,错误如下 ..
发布时间:2021-12-15 09:56:44 其他开发

特性不能被做成一个对象

我有以下代码: extern crate 期货;//0.1.24使用期货::未来;使用 std::io;结构上下文;酒吧特质 MyTrait {fn 接收(上下文:上下文)->Future;}酒吧结构我的结构{我的特质:我的特质,} 当我尝试编译它时,我收到错误消息: error[E0038]: trait `MyTrait` 不能变成一个对象-->src/lib.rs:13:5|13 |我 ..
发布时间:2021-12-15 09:38:18 其他开发

使用泛型类型时如何使用整数文字?

我想实现一个函数来计算任何通用整数类型中的位数.这是我想出的代码: extern 板条箱编号;使用 num::Integer;fn int_length(mut x: T) ->u8{如果 x == 0 {返回 1;}让 mut 长度 = 0u8;如果 x 0 {x/= 10;长度 += 1;}长度}fn 主(){println!("{}", int_length(45));println!(" ..
发布时间:2021-12-15 09:28:17 其他开发

Rust 中的 trait 和 Haskell 中的类型类有什么区别?

特征在 Rust 中似乎至少在表面上类似于 typeclasses ,但是我看到人们写道它们之间存在一些差异.我想知道这些差异到底是什么. 解决方案 在基本层面上,没有太大区别,但它们仍然存在. Haskell 将类型类中定义的函数或值描述为“方法",就像特征描述它们所包含的对象中的 OOP 方法一样.然而,Haskell 以不同的方式处理这些,将它们视为单独的值,而不是像 OOP ..
发布时间:2021-12-14 12:26:13 其他开发

动态混合一个特征

有特点 trait Persisted {定义:长} 如何实现一个方法来接受任何 case 类的实例并返回其混合了 trait 的副本? 该方法的签名如下: def toPersisted[T](instance: T, id: Long): T with Persisted 解决方案 这可以通过宏来完成(从 2.10.0-M3 开始正式成为 Scala 的一部分).这是您要查找的 ..
发布时间:2021-12-07 13:08:53 其他开发

何时在 Scala 特征中使用 val 或 def?

我正在浏览 有效的 scala 幻灯片,它在幻灯片 10 中提到永远不要使用 val 在抽象成员的 trait 中,并使用 def 代替.幻灯片没有详细提到为什么在 trait 中使用抽象的 val 是一种反模式.如果有人可以解释在抽象方法的特征中使用 val 与 def 的最佳实践,我将不胜感激 解决方案 def 可以通过 def、val 中的任意一个来实现>、lazy val 或 ob ..
发布时间:2021-12-07 13:02:15 其他开发

自我类型和特质子类有什么区别?

特征的自类型A: 特性B特性 A { 这个:B =>} 说"A不能混合到一个不扩展B"的具体类中. 另一方面,以下内容: 特性B特质 A 延伸 B 说“A 中混合的任何(具体或抽象)类也将混合在 B 中". 这两个陈述不是一个意思吗?self 类型似乎只是为了创造一个简单的编译时错误的可能性. 我错过了什么? 解决方案 主要用于依赖注入,例如在蛋糕模式中.有一篇很 ..
发布时间:2021-12-07 12:36:11 其他开发