Questions tagged «traits»

在计算机编程中,特征是方法的集合,用作“用于构造面向对象程序的简单概念模型”

4
如何从高阶特征绑定特征返回关联类型?
我有一个特征,具有反序列化关联类型的功能。但是,该关联类型必须具有调用者确定的生存期,因此我有一个单独的特征,我使用了绑定到其上的更高等级的特征,以便可以在任何生命周期中反序列化它。 我需要使用返回此关联类型的闭包。 我有以下代码可以做到这一点: #![allow(unreachable_code)] use std::marker::PhantomData; trait Endpoint: for<'a> EndpointBody<'a> {} trait EndpointBody<'a> { type Out: 'a; fn serialize(body: &Self::Out) -> Vec<u8>; fn deserialize(raw_body: &'a [u8]) -> Self::Out; } // ///////////////////////////////////////////////////////// /// Trait object compatible handler trait Handler { fn execute(&self, raw_body: &[u8]) -> Vec<u8>; } /// Wraps a function …

2
当未明确给出返回类型时,为什么可以用返回字符串的方法覆盖返回单元的方法?
我正在阅读有关Scala Edition1中编程特性的章节中的代码示例, 网址为https://www.artima.com/pins1ed/traits.html 并由于我的错字而遇到奇怪的行为。尽管代码段下面的特征覆盖方法不会产生任何编译错误,但是覆盖方法的返回类型Unit与相对String。但是,在对象上调用该方法时,它返回Unit,但不打印任何内容。 trait Philosophical { def philosophize = println("I consume memory, therefore I am!") } class Frog extends Philosophical { override def toString = "green" override def philosophize = "It aint easy to be " + toString + "!" } val frog = new Frog //frog: Frog = …
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.