小编mds*_*mmo的帖子

Kotlin:多个命名伴侣对象

我确定这是以前问过的,但我似乎找不到答案:

我有一堂课暗示了java.io.Serializableandroid.os.Parcelable。这些类需要以下伴随对象:

companion object CREATOR : Parcelable.Creator<MyClass> {
    override fun createFromParcel(parcel: Parcel): MyClass
    ...
}
Run Code Online (Sandbox Code Playgroud)

companion object {
    private val serialVersionUid: Long = 123
}

Run Code Online (Sandbox Code Playgroud)

问题是我不能同时拥有这两个伴随对象,因为这会导致only one companion object per class异常。

如何在同一个类中有两个名称不同的伴随对象?

kotlin

2
推荐指数
1
解决办法
71
查看次数

如何从装箱特征对象中获取对结构的引用?

我想将类型的值插入Box<T>到 a 中Vec<Box<Trait>>,然后获取对该值的引用。(T是实现的泛型类型Trait)。返回值的类型应该是&T

下面的实现几乎可以工作,除了无法转换Box<Trait>Box<Any>.

HashSet有 (实验性) get_or_insert(),这对于这个来说是完美的,但似乎没有Vec?的版本

use std::any::Any;

trait A {}
struct B;
impl A for B {}

// How to write this function?
pub fn insert<'a, T>(vector: &mut Vec<Box<dyn A>>, value: T) -> &'a T where T: A {
    // move the value into the vector
    vector.push(Box::new(value));

    // get the reference to the inserted value back
    let it: &Box<dyn Any> …
Run Code Online (Sandbox Code Playgroud)

generics traits rust

2
推荐指数
1
解决办法
3884
查看次数

c++:使用模板将任何 lambda 封装在另一个 lambda 中

我想创建一个可以包装任何 lambda 的函数来记录对其的开始/结束调用。

\n\n

下面的代码可以工作,除了:

\n\n
    \n
  1. 任何具有捕获的 lambda

  2. \n
  3. 任何返回 void 的 lambda(尽管这可以通过编写第二个函数轻松修复)

  4. \n
\n\n
#include <iostream>\n#include <functional>\n\ntemplate <class T, class... Inputs>\nauto logLambda(T lambda) {\n    return [&lambda](Inputs...inputs) {\n        std::cout << "STARTING " << std::endl;\n        auto result = lambda(inputs...);\n        std::cout << "END " << std::endl;\n        return result;\n    };\n}\n\nint main() {\n    int a = 1;\n    int b = 2;\n\n    // works\n    auto simple = []() -> int {\n        std::cout << "Hello" << std::endl; return 1;\n    };\n    logLambda(simple)();\n\n    // works so long …
Run Code Online (Sandbox Code Playgroud)

c++ lambda templates

1
推荐指数
1
解决办法
153
查看次数

Java:为什么每个类都要写包

既然所有java类文件都放在一个与classes包匹配的目录中,为什么每个类都需要在顶部的包声明?编译器不应该能够从目录结构中获取包吗?

java

0
推荐指数
1
解决办法
137
查看次数

标签 统计

c++ ×1

generics ×1

java ×1

kotlin ×1

lambda ×1

rust ×1

templates ×1

traits ×1