小编Bri*_*ian的帖子

Haskell 构造类似于 Rust 特征对象

Haskell 支持类型类,例如相等:

class Eq a where 
  (==)                  :: a -> a -> Bool
Run Code Online (Sandbox Code Playgroud)

Rust 对类型特征做了同样的事情:

pub trait Draw {
    fn draw(&self);
}
Run Code Online (Sandbox Code Playgroud)

现在,可以在 Haskell 中声明一个列表,其元素必须属于相等类型类:(Eq a => [a]我相信在 Haskell 中a称为约束类型)。但是,列表的元素仍然必须是同一类型!说,全部Integer或全部Float或某事。然而,在 Rust 中,人们可以拥有一个值列表(向量),其中每个值都实现给定的特征,但它们不一定是相同的具体类型:Vec<Box<dyn Draw>>。有没有办法在 Haskell 中做同样的事情?就像,我想要一个值列表,但我关心的是每个值都属于某个类型类,但不一定是相同的具体类型。

haskell

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

类/结构成员的地址排序

C++23 草案要求结构或类的后续非静态数据成员必须具有更高的地址。据我所知,早期的标准也部分地要求这样做,但是当允许编译器重新排序这些数据成员时有一些规则。这里有人能告诉我哪些规则在什么时候适用吗?

c++ language-lawyer c++23

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

有没有办法让我干燥 Python 文件中的常见导入?

在 C# 中,全局使用的概念可用于 DRY(不要重复)using许多文件中的许多常见语句。

现在,我们在许多 Python 文件中都有许多类似的导入。我们是否可以使用类似的策略来减少样板代码?

python python-import

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

如何在 Python 中记录使用“type”定义的类型别名?

Python 3.12有这样type的说法。如何正确记录类型别名?

我试过:

type Number = int | float
"""Represents a scalar number that is either an integer or float"""
Run Code Online (Sandbox Code Playgroud)

但这似乎没有将文档字符串与别名关联起来。我尝试将文档字符串放在=别名定义之后和之前,但这生成了错误。

python docstring type-hinting type-alias python-3.12

6
推荐指数
0
解决办法
208
查看次数

为什么括号中的 AND 与没有的评估不同?

在 C++ 中,4&1 == 0, 和1&1 == 1. 但是,4&1 != 1&1评估为0,而不是1,但(4&1) != (1&1)仍按1预期评估。为什么是这样?

c++ bit-manipulation operator-precedence

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

在没有 C++ 实例的情况下获取 unique_ptr 内 std::array 的大小

我有一个类型声明为:

using Buffer = std::unique_ptr<std::array<uint8_t, N>>;
Run Code Online (Sandbox Code Playgroud)

我还有一个模板函数声明为:

template<typename Buffer>
bool temp_func()
{
    // do something
}
Run Code Online (Sandbox Code Playgroud)

我正在使用 Buffer 类型调用 temp_func:

temp_func<Buffer>();
Run Code Online (Sandbox Code Playgroud)

现在,在 temp_func 中,我想获取该类型的大小Buffer,而不创建该类型的实例。

我需要的是类似于std::tuple_size<Buffer>::value除了我不能调用std::tuple_sizeunique_ptr只能直接调用std::array

我只能使用 C++11。我该怎么做?

c++ unique-ptr c++11 stdarray

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

我可以将自定义数据添加到 pyproject.toml 文件中吗

我正在使用toml包来读取我的pyproject.toml文件。我想添加自定义数据,在本例中我将在docs/conf.py文件中读取这些数据。当我尝试添加自定义部分时,我从Vs Code 中的Even Better TOML扩展中收到错误和警告,指出不允许我的自定义数据。

示例 TOML 部分位于pyproject.toml

[custom.metadata]
docs_name = "GUI Automation for windows"
docs_author = "myname"
docs_copyright = "2023"
docs_url= "https://someurl.readthedocs.io/en/latest/"
Run Code Online (Sandbox Code Playgroud)

所以,我的问题是:是否有一种有效的方法将自定义数据添加到pyproject.toml文件中?

python toml python-packaging pyproject.toml

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

C++ 检查用户输入是否为float

我想检查用户是否输入了有效的浮点数。奇怪的是,似乎这可以对 an 完成int,但是当我更改代码以读取 afloat时,它会给出错误消息

error: invalid operands of types 'bool' and 'float' to binary 'operator>>'
Run Code Online (Sandbox Code Playgroud)

这是我的代码:

#include <iostream>

int main()
{
    float num;  // Works when num is an 'int', but not when its a 'float'
    std::cout << "Input number:";
    std::cin >> num;
    if (!std::cin >> num){
        std::cout << "It is not float.";
    }
}
Run Code Online (Sandbox Code Playgroud)

c++ iostream

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

使用自定义 __getitem__ 方法解包参数永远不会终止

有人可以解释一下幕后发生了什么以及为什么这个程序没有完成吗?

class A:
    def __getitem__(self, key):
        return 1

print(*A())
Run Code Online (Sandbox Code Playgroud)

python

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

std::span 中 std::dynamic_extent 的用途是什么

我知道std::span是静态的。它只是一堆向量/数组/等的视图。元素。

我看到span的构造函数,好像std::dynamic_extent是在4-6中使用的。但在这些构造函数中,大小有一个必需的模板参数 - std::size_t N。对我来说,这意味着大小/计数/长度在编译时是已知的。那么到底是什么std::dynamic_extent

c++ std std-span

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