85得票3回答
如何在我不拥有的类型上实现我不拥有的特质?

我想为Vec实现Shl特质,下面是代码。这将使得像vec << 4这样的操作成为可能,这对于vec.push(4)来说是不错的语法糖。 use std::ops::Shl; impl<T> Shl<T> for Vec<T> { ty...

82得票3回答
如何在PHP >= 5.4中的特质中重载类构造函数

在 PHP 5 中,我可以重载构造函数(和其他任何方法)。但如果我得到像下面这样的代码:class Base { public function __construct($a, $b) { echo $a+$b; } public function...

82得票7回答
使用traits相比抽象类有哪些优点?

请问有人能解释一下Scala中的特征(traits)吗?和继承抽象类相比,特征有什么优势?

77得票4回答
在trait定义中,是否可以将`impl Trait`用作函数的返回类型?

在trait中定义函数时,是否可以使用impl Trait返回类型?我想创建一个可以由多个结构体实现的trait,使它们所有的new()函数都返回一个对象,这些对象可以以相同的方式使用,而不必编写特定于每个对象的代码。trait A { fn new() -> impl A; }...

75得票7回答
PHP Traits - 定义通用常量

如何定义常量,以便多个命名空间内的类使用?我试图避免过多继承,因此扩展基类不是理想的解决方案,而且我在使用traits时遇到了困难。在PHP 5.4中是否有任何可能或应采取不同的方法? 我有以下情况:trait Base { // Generic functions } class...

73得票2回答
为什么在这个 trait 中需要 `Sized` 约束?

我有一个带有两个关联函数的特征: trait WithConstructor: Sized { fn new_with_param(param: usize) -> Self; fn new() -> Self { Self::new_with_...

72得票3回答
如何克隆存储盒装特征对象的结构体?

我写了一个程序,拥有特质 Animal 和结构体 Dog 实现该特质。它还有一个结构体 AnimalHouse ,将动物作为特质对象 Box<Animal> 存储。 trait Animal { fn speak(&self); } struct Dog { ...

71得票2回答
特质类是什么以及它们的作用是什么?

我正在阅读Scott Meyers的Effective C++。他在谈论特性类,我明白我需要它们来在编译时确定对象的类型,但是我无法理解他关于这些类实际上是做什么的解释?(从技术角度) 他所说的特性类是一种元编程技术,用于获取程序中各种类型的特征信息。通过定义不同的特性类,我们可以让编译器了解...

68得票1回答
C++的概念和Rust的特质有哪些相似之处和不同之处?

在Rust中,抽象的主要工具是traits。在C++中,有两种抽象工具:抽象类和模板。为了摆脱使用模板的一些缺点(例如难以阅读的错误消息),C++引入了概念,它们是"命名的需求集"。 这两个特性看起来相当相似: - 定义trait/concept是通过列出要求来完成的。 - 两者都可以用于...

67得票2回答
在Scala中混合多个特质

快速提示: 本例子出自 Scala for Java Refugees Part 5: Traits and Types 教程。 假设我有下列特质:Student,Worker,Underpaid和Young。 如何声明一个类(不是实例),名为CollegeStudent,并拥有所有这些特质?...