traits相关内容

为什么使用我的类型作为外部类型合法的参数来实现外部特征?

我正在修改一些代码以依赖于 rand 0.5 版.起初,我担心如何使用 Standard 生成我自己类型的随机值,但我发现这是合法的: impl ::rand::distributions::Distribution对于 ::rand::distributions::Standard {//...} 为什么是合法的?我认为为外部类型实现外部特征是 非法. 解决方案 这些规则(称为孤立规 ..
发布时间:2021-09-09 19:04:40 其他开发

特质是否仅适用于对象?

再次在这个问题的尾部,我正在尝试做一个will特质工作,使用这个(打高尔夫球)代码: sub show-value( $a-var ) {说“{$a-var.^name} 的值是",$a-var.gist;}子做的东西(){ENTER { 说“进去";}我们的 $bar 将输入 { show-value($_) };$bar = "baz";离开{说“离开";}}做东西(); 这只是打印“Go ..
发布时间:2021-09-09 19:04:37 其他开发

类型“A"未实现特征“A"

我正在尝试使用具有将闭包作为参数的函数的特征,然后在特征对象上使用它. trait A {fn f P (&self, p:P) 其中 P: Fn() ->();}结构体 B {a:方框A}impl B {fn c(&self) {self.a.f(|| {});}} 此代码段产生以下错误: trait `A` 没有为类型 `A` 实现 [E0277] rustc 的版本是 rustc ..
发布时间:2021-09-09 19:04:31 其他开发

移相器特性何时运行?

will移相器特征示例显示此代码: 我们的 $h 会输入 { .rememberit() } 会撤销 { .forgetit() }; 这要么被误解,要么根本不是真正的用例.如果它被误解了,我会说它 enter s 块,它被分配了一个变量.如果它不是一个真正的用例,它会调用一个未定义变量的方法.这似乎是发生了什么: 我们的善行将进入{说(“运行");if Backtrace.new.grep ..
发布时间:2021-09-09 19:04:28 其他开发

如何将 Trait 作为应用程序数据传递给 Actix Web?

我想创建一个 actix-web 服务器,我可以在其中提供我的 搜索 trait 作为应用程序数据,以便在多个实现之间轻松交换或使用模拟实现进行测试.无论我尝试什么,我都无法编译它,或者当我编译它时,在 Web 浏览器中访问路由时出现以下错误: 未配置应用数据,配置使用App::data() 这是我目前所拥有的 //main.rs使用 actix_web::dev::Server;使 ..
发布时间:2021-09-09 19:04:25 其他开发

是否可以为函数的泛型类型创建一个具有特征边界的类型别名?

此代码: pub type Foo= fn(bar: T); 产生 错误 E0122(在较新版本的Rust,这只是一个警告): 已尝试向类型别名添加通用约束.这个约束完全被忽略.为了向后兼容,Rust仍然允许此警告.考虑以下示例: trait Foo {}输入 MyType= (R, ());fn 主(){让 t: MyType;} 我们可以声明一个 MyType 类型的变量,尽管事 ..
发布时间:2021-09-09 19:04:22 其他开发

类型参数中的Scala特征`this.type`

看看这两个简单的特征: trait TreeNode1[S] {def子节点:列表[S]}特性 TreeNode2 {def子节点:列表[this.type]} (不是最好的命名,重命名只是为了简短.) TreeNode1 定义了一个树节点及其子节点访问,指向它们的类型 S. TreeNode2 定义相同,但其子节点具有与当前特征混合的类相同的类型(换句话说,具有统一子节点的树节点). ..
发布时间:2021-09-09 19:04:19 其他开发

任何人都知道用于 Trait 在类中重新定义名称的 PHP 魔术常量?

为了简单起见,我注意到 PHP 似乎没有提供任何魔法常量来确定某个 trait 在类中更改为什么名称.由于这听起来让我感到困惑,我将举一个例子,因为它相当简单,并且预计它会出现在新的 PHP 5.5 中,我看不出有什么方法可以做到.所以这里是: 假设我们有一个类,它使用了一些与类中的一些函数冲突的特性,例如: class SomeClass {使用 \Name\Space\SomeTrai ..
发布时间:2021-09-09 19:04:13 PHP

PHP:是否可以从特征静态方法中使用特征获取类的名称?

可以从属于该 trait 的静态方法中确定使用 trait 的类的名称吗? 例如: trait SomeAbility {公共静态函数 theClass(){返回;}}类某事{使用 SomeAbility;...} 获取类名: $class_name = SomeThing::theClass(); 我的直觉是,可能不是.我找不到任何其他暗示的东西. 解决方案 使用 使用 s ..
发布时间:2021-09-09 19:04:09 PHP

为什么使用嵌套特征会改变 PHP 行为?

使用 PHP 7.2,我有一个使用特征 MyFirstTrait 的类 MyClass.它是这样定义的: class MyClass{使用 MyFirstTrait;} 这个 MyFirstTrait 使用另一个特征 MySecondTrait.它是这样定义的: trait MyFirstTrait{使用 MySecondTrait;} MySecondTrait 不使用任何其他特征.它是 ..
发布时间:2021-09-09 19:04:06 PHP

为什么方法重命名在 PHP 特征中不起作用?

我使用 PHP 7.1.0. 假设我们有一个 trait,我们在类中使用它并重命名导入的方法: 特质T{公共函数 A() {回声“.";}}C级{使用 T {A 为 B;}}$c = 新 C();$c->B();$c->A();//为什么有效? 为什么 PHP 仍然允许我使用旧的方法名称(在本例中为 A)? 这真的很痛苦,因为在更复杂的例子中你不能依赖方法重命名——因此你可能会意外 ..
发布时间:2021-09-09 19:04:03 PHP

PHP 类型提示特性

我有一个特点.出于创造力的考虑,我们将这种特质称为 Trait: trait Trait{静态函数处理($instance){//小心对待那个 trait 实例}} 现在,我还有一个使用这个特性的类,User.当尝试使用 User 实例调用 Treat 时,一切正常.但我想提示一下,只有使用 Trait 的类的实例才能作为参数给出,如下所示: 静态函数处理(Trait $instance){ ..
发布时间:2021-09-09 19:04:00 PHP

如何防止在“使用"之外使用 trait 方法?PHP 中的作用域

我想知道是否有任何方法可以防止在 PHP 中的任何类上下文之外使用 trait 方法? 让我用一个简短的例子来解释我想要什么,这是我当前的代码: //文件:MyFunctions.php特质 MyFunctions {函数 hello_world() {echo '你好世界!';}}//文件:A.php包括“MyFunctions.php";A类{使用我的功能;}//文件:testTrai ..
发布时间:2021-09-09 19:03:57 PHP

PHP - 作为帮手的特质

像这样使用 trait 注入辅助方法有什么矛盾吗? Foo类{使用 Helper\Array;函数 isFooValid(array $foo){返回 $this->arrayContainsOnly('BarClass', $foo);}} 解决方案 这就是特征的想法. 但是,您仍然应该注意耦合代码.如果 Helper\Array 与 Foo 所在的命名空间完全不同,您可能需要重 ..
发布时间:2021-09-09 19:03:55 PHP

如何从子类型中的特征初始化值?

如果我写: trait T {值 t = 3val u = 1::t::Nil}U 类扩展 T {覆盖 val t = 2}(新的U).u 它显示了这一点. List(1, 0) 我应该如何更改上面的代码以使其显示以下内容: List(1, 2) 即override val t 在特征T? 中为u设置t的值 解决方案 一种方法是使用 def 或 lazy 延迟对 u 的评估val ..
发布时间:2021-09-09 19:03:52 其他开发

如何检查一个类是否在 PHP 中使用了 trait?

请注意,一个 trait 可能会使用其他 trait,因此该类可能不会直接使用该 trait.并且该类也可以从使用 trait 的父类继承. 这是一个可以在几行内解决的问题还是我必须做一些循环? 解决方案 class_uses() 函数将返回一个包含该类使用的所有特征名称的数组,并将通过向它传递类名或实例来工作......但是,您需要通过继承树以获取使用的所有特征,并通过每个特征 ..
发布时间:2021-09-09 19:03:49 PHP

Trait 中的替代关键字如何工作

我刚刚阅读了有关traits 以及如何在以逗号分隔的同一php 代码中使用多个php trait 的内容.然而,我不明白在两个特征具有相同功能的情况下用于解决冲突的替代关键字的概念.任何人都可以解释而不是关键字如何工作以及如何使用它来告诉引擎我愿意使用特征 A 的函数 hello() 而不是特征 B 的函数,因为有两个特征 A 和 B 以及一个函数 hello() 在这两个特征中. 解决方案 ..
发布时间:2021-09-09 19:03:46 PHP

如何初始化作为 val 的特征变量

我有 MyObject 和 MyTrait: class MyObject(private val myname: String = "") extends MyTrait {_name = 我的名字def foo(我的名字:字符串){_name = 我的名字}}特质我的特质{受保护的 var _name: String = _定义名称 = _name} 这很好用 val myObject ..
发布时间:2021-09-09 19:03:43 其他开发