问题列表 - 第317953页

类/类的类型,使用元类创建

class Meta(type):
    def __new__(cls, name, bases, dct):
        new_class = type(name, bases, dct)
        new_class.attr = 100  # add some to class
        return new_class


class WithAttr(metaclass=Meta):
    pass


print(type(WithAttr))
# <class 'type'>

Run Code Online (Sandbox Code Playgroud)

为什么它打印<class 'type'>,但不<class '__main__.Meta'> 打印我对吗,类 WithAttr 是 Meta 的实例?

python oop metaclass python-3.x

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

C# 中 IEnumerable&lt;T&gt; 的意外行为

我在 .NET 6 中发现了一些意外行为。有人可以向我解释一下吗?

考虑以下代码:

public class A
{
    public string Name { get; set; }
    public double? Value { get; set; }
}

public static IEnumerable<A> GetAList()
{
    var arr = new int[] { 1, 2, 3 };

    return arr.Select(_ => new A { Name = _.ToString() });
}

var aList = GetAList();

foreach (var a in aList)
{
    a.Value = 1.0;
}

var aResult = aList.ToList();
Run Code Online (Sandbox Code Playgroud)

Value中的字段aResult等于null这怎么可能?

c# .net-6.0

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

如果 main.rs 位于工作区中的同一个 crate 中且包名称等于 bin 名称,则无法添加对 lib.rs 的依赖项

我得到了这个货物 toml 文件:

[package]
edition.workspace = true
name = "batch_jobs"
version.workspace = true

[[bin]]
name = "batch_jobs"
path = "src/main.rs"

[lib]
name = "batch_jobs_lib"
path = "src/lib.rs"
Run Code Online (Sandbox Code Playgroud)

在另一个板条箱中,我想添加对batch_jobs_lib. 我无法这样做。货物抱怨找不到板条箱。当我更改该部分的命名时[[bin]],它可以正常工作,但我只是想知道这段代码出了什么问题。

在同一工作区的另一个板条箱中,我尝试像这样声明依赖项:

batch_jobs_lib = { path = "../batch_jobs" }
Run Code Online (Sandbox Code Playgroud)

我收到此错误:error: no matching package named batch_jobs_lib found

使用此代码时,我无法访问该库的代码:

batch_jobs = { path = "../batch_jobs" }
Run Code Online (Sandbox Code Playgroud)

更糟糕的是,Rust 甚至找不到任何包,但很乐意添加依赖项。

我是否遗漏了某些内容,或者我是否错误配置了我的 toml 文件,这是不允许/不可能的?

rust rust-cargo

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

C++ 中的状态模式实现遇到分段错误

我正在 C++ 中实现状态模式,通常一切正常并且根据需要工作,但是在状态多次更改后我出现分段错误,堆栈分配不断上升直到达到最大值,然后崩溃雇用代码: 接口:

class ControllerT1; // Forward declaration

class IControllerStateT1 {
public:
    virtual ~IControllerStateT1() {}
    virtual void handle(ControllerT1* controller) = 0;
};



class ControllerT1 {
    public:
        ControllerT1(std::vector<int> &input, std::vector<int> &output);
        ~ControllerT1();

        void stop();
        void initialize();
        void run();

        void setState(IControllerStateT1* newState);

    private:
        IControllerStateT1* currentState;
};


#include "ControllerT1.h"
#include "StopT1.h"

ControllerT1::ControllerT1(std::vector<int> &input, std::vector<int> &output) : currentState(new StopT1()) {
//  ControllerInputs = input;
//  ControllerOutputs = output;
}

ControllerT1::~ControllerT1() {
    delete currentState;
}

void ControllerT1::run() {
    currentState->handle(this);
}

void ControllerT1::stop() {
    currentState->handle(this); …
Run Code Online (Sandbox Code Playgroud)

c++ state qnx

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

Java 线程操作文件

我试图让两个线程操作同一个文件。问题是它只创建文件(Thread1 责任),但不填充文件(这是 Thread2 责任)。此外,它会挂起,而不会使用退出代码()完成该过程。

这是输出:

File created: example.txt
Thread 1: File creation finished
Run Code Online (Sandbox Code Playgroud)

这是完整的代码:

import java.io.*;

public class ThreadWithFiles {
    private static final String FILE_PATH = "/Users/myUser/Desktop/example.txt";

    public static void main(String[] args) {

        Object lock = new Object();

        Thread thread1 = new Thread(() -> {
            synchronized (lock) {
                createFile();
                System.out.println("Thread 1: File creation finished");
                lock.notify();
            }
        });

        Thread thread2 = new Thread(() -> {
            synchronized (lock) {
                try {
                    lock.wait();
                    populateFile();
                    lock.notify();
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            } …
Run Code Online (Sandbox Code Playgroud)

java multithreading

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

使用 cypress 的 Material UI 下拉列表并不总是有效

我尝试了很多方法,但并不总是有效。我的意思是..它确实找到了该元素并单击它...但并不总是为下拉输入字段添加值。我无法继续测试,因为下拉列表是我需要的必填字段。 下拉输入字段不能为空。

Cypress.Commands.add("selectTooltipDropdownOption", (optionText, inputSelector) => {
    cy.getCyInput(inputSelector,{timeout:10000}).click();

    cy.getCyRole("menu").children('li').contains(optionText).trigger("click", { timeout: 10000 });
  
    cy.getCyInput(inputSelector)
      .invoke("prop", "defaultValue")
      .should("contain", optionText);
  });
Run Code Online (Sandbox Code Playgroud)

我该怎么做才能使遗嘱cy.getCyInput("dropdowninputField")始终具有价值而不是空的?

赛普拉斯跑

下拉菜单似乎不是选择类型;它是一个经典的选择组件,具有来自 Material UI 的附加样式。这是它在 HTML 中的样子。我将尺寸做得更小,以便更容易查看,并且位置是根据元素或组件的 ID 动态变化的。

Cypress.Commands.add("selectTooltipDropdownOption", (optionText, inputSelector) => {
    cy.getCyInput(inputSelector,{timeout:10000}).click();

    cy.getCyRole("menu").children('li').contains(optionText).trigger("click", { timeout: 10000 });
  
    cy.getCyInput(inputSelector)
      .invoke("prop", "defaultValue")
      .should("contain", optionText);
  });
Run Code Online (Sandbox Code Playgroud)

material-ui dropdown cypress

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

重新启动 mongod 以设置副本集时未找到集合 [local.oplog.rs] 问题

我已按照官方文档将独立 mongodb 实例(本地 ubuntu 机器)转换为副本集。我们使用 --replset 标志重新启动 mongod 的部分似乎会引发错误。

使用的命令:

sudo systemctl stop mongod

sudo mongod --port 27017 --dbpath /var/lib/mongodb --replSet rs1 --bind_ip localhost

{"t":{"$date":"2023-11-24T17:58:28.002+05:30"},"s":"W",  "c":"QUERY",    "id":23799,   "ctx":"ftdc","msg":"Aggregate command executor error","attr":{"error":{"code":26,"codeName":"NamespaceNotFound","errmsg":"Unable to retrieve storageStats in $collStats stage :: caused by :: Collection [local.oplog.rs] not found."},"stats":{},"cmd":{"aggregate":"oplog.rs","cursor":{},"pipeline":[{"$collStats":{"storageStats":{"waitForLock":false,"numericOnly":true}}}],"$db":"local"}}}
Run Code Online (Sandbox Code Playgroud)

cmd 进入循环,一次又一次地打印此消息,直到我强行关闭程序。

我尝试重新安装 mongodb 以查看是否是随机问题。但它仍然占了上风。

尝试了 mongod restart 命令的多种变体。使用不同的关闭程序。

database ubuntu transactions mongodb replicaset

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

我们可以禁止使用 || lint 的可选类型?

我想禁止以下代码:

function(num: undefined|number) {
  return num || 10;
}
Run Code Online (Sandbox Code Playgroud)

我想使用??而不是||.

typescript eslint typescript-eslint

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

我如何在 Playwright 中复制这个 cy.intercept?

我希望将我的测试套件从 Cypress 迁移到 Playwright。当我处理 API 请求时遇到了障碍。

在我的测试套件中,我想等待网络请求完成并返回 200 响应,然后再进行下一个操作。

我的问题是网络请求 url 包含动态值,之前在 Cypress 中我将“*”作为通配符,Playwright 中的替代方案是什么?

我的代码中有以下 cy.intercept:

cy.intercept('GET',`${apiUrl}/employee/*/information`).as('GETemployeeInformation');
Run Code Online (Sandbox Code Playgroud)

在继续测试步骤之前,我在测试套件中使用 cy.wait 调用此拦截,我尝试使用以下内容在 Playwright 中复制此内容:

async isSignedIn() {
    await this.page.waitForResponse(response => response.url().includes("/employee/*/information") && response.status() === 200);
  }
Run Code Online (Sandbox Code Playgroud)

javascript automation cypress playwright

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

Google 地图无法在扩展控制 Android Studio 上加载

还有其他人面临同样的问题吗?我正在尝试在扩展控件上设置路线,但我得到了一张空白地图,我已经更新并重新安装了 Android Studio 和 AVD,但我仍然面临着这个令人沮丧的问题。

问题截图

我期待看到有关 Android Studio 模拟器扩展控件的 Google 地图

android android-virtual-device flutter

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