小编RoQ*_*riX的帖子

在 plotly 中使用数值来创建甘特图

我想创建交互式甘特图(或序列图)来显示多个处理器上的任务调度。

我找到了这个库,它生成了非常好的交互式甘特图。不幸的是,plotly-Gantt 只适用于日期,而不适用于数值,就像我对日程表的运行时值一样。

是否有可能用数值绘制甘特图?

代码示例:(我想使用这样的东西)

import plotly.figure_factory as ff

df = [dict(Task="Job A on Core 0", Start=0, Finish=10),
      dict(Task="Job B on Core 1", Start=2, Finish=8),
      dict(Task="Job C on Core 0", Start=11, Finish=12)]

fig = ff.create_gantt(df)
fig.show()
Run Code Online (Sandbox Code Playgroud)

python plot gantt-chart plotly

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

泛型接口和继承来调用泛型方法

我想要一个泛型类,它可以根据派生类定义的泛型类型调用方法。为此,我实现了一个基本接口和一个通用接口,其中基本接口是通用的,并且也派生自基本接口。

在通用接口中,我想要一个基于基本接口的类型 T 的方法。

之后我想实现一个基于通用接口的类,它应该能够调用通用方法。这是示例代码:

public interface BaseInterface
{ }

public interface GenericInterface<T> : BaseInterface where T : BaseInterface
{
    void Foo(T t);
}

public class C<T> : GenericInterface<T> where T : BaseInterface
{
    public C()
    {
        // None of these works
        Foo(this);
        Foo((T)this);
        Foo((BaseInterface)this);   
    }

    public void Foo(T t) { }
} 
Run Code Online (Sandbox Code Playgroud)

有没有办法在这里实现我想要的行为?

这里的错误信息是:

cannot convert from 'C<T>' to 'T'
Run Code Online (Sandbox Code Playgroud)

在我看来这应该是可能的,因为 C 派生自 BaseInterface,而 BaseInterface 是 T

c#

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

防止为类或模块创建新属性

我看到这个问题关于SO Prevent在init之外创建新属性,它展示了如何防止向类的对象添加新属性。

我希望整个类甚至整个加载的模块具有相同的行为。

示例类:

class Klass:
     a = 0
     b = 1
Run Code Online (Sandbox Code Playgroud)

另一个模块:

from Klass import Klass

Klass.c = 2 # this should raise an error
Run Code Online (Sandbox Code Playgroud)

这可能吗?

python

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

使用列表推导返回第一个找到的元素或无

我想优化我的python代码,我可以通过列表理解来改善以下for循环以提高性能:

for obj in self.objs:
    if obj.is_runnable():
        return obj
return None
Run Code Online (Sandbox Code Playgroud)

我的想法是做这样的事情:

objs = [obj for obj in self.objs if obj.is_runnable()]
return objs[0]
Run Code Online (Sandbox Code Playgroud)

但是我认为这不会更好,因为它不会在第一个找到的元素之后停止迭代,现在它无法处理这种None情况,但这可以通过if-else声明来避免。
我的问题:有没有办法在列表返回第一个元素后使用列表理解功能而中断?

python list-comprehension

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

从 lambda 返回一个引用

通过宏扩展本题的解决方案:Pimpl idiom through Macro

我希望能够从 lambda 调用返回参考值:

#include <iostream>
#include <memory>

class FooImp
{
public:
    int& C() { return _value; }

private:
    int _value{};
};

class Foo
{
public:
    Foo() : 
        _imp{ std::make_unique<FooImp>() }
    {
    }

    int& C()
    {
        // In member function 'int& Foo::C()': cannot bind non-const lvalue reference 
        // of type 'int&' to an rvalue of type 'int'
        return call_impl([&] { return _imp->C(); });
    }

private:
    template<typename fn_t>
    auto call_impl(fn_t fn) -> decltype(fn()) 
    {
        std::cout << "Construct …
Run Code Online (Sandbox Code Playgroud)

c++ lambda c++11

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

没有公共基类的泛型访问属性

我有一个库的两个独立类,它们没有相同的基类,我也不能更改这些类的实现。

想象一下这些类是这样的:

public class A {
     public int X { get; } = 1;
}

public class B {
     public int X { get; } = 2;
}
Run Code Online (Sandbox Code Playgroud)

现在我想创建一个通用类,它要么依赖于AB与访问的价值X在那里。

所以我做了:

public class GenericClass<T> 
    /*where T : ?*/
{
    void Foo(T t) {
        int x = t.X; // is this possible and how? 
    }
}
Run Code Online (Sandbox Code Playgroud)

如果我自己实现Aand B,我会定义一个实现 Property 的 Interface X,但我不能这样做。有没有其他方法可以在不改变 class Aand 的情况B下说 GenericT有 Property …

c# generics

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

主题::加入与分离

为什么我要使用std::thread::join然后等到这个线程结束?我认为多线程的目的是并行启动更多线程。代替join(),我也可以“正常”调用该函数,例如foo(). 那么为什么是他们的join()?不是我唯一需要的东西detach()吗?

c++ multithreading c++11

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