小编Joe*_*ley的帖子

在java中使用接口.新问题

假设有一个Displaceable接口和一个实现Displaceable的类Circle.Displaceable有一个名为move()的方法,当然是在Circle中实现的.

在以下场景中会发生什么?

Circle a =  new Circle(..);
Displaceable b = a;
b.move()
Run Code Online (Sandbox Code Playgroud)

对象是否会引用Circle的移动方法?

java

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

Rust在运行时如何存储类型?

A u32占用4个字节的内存,a String占用3个指针大小的整数(用于位置,大小和保留空间),在栈上加上一些内存。

在我看来,这意味着Rust在执行代码时不知道在特定位置存储什么类型,因为这种知识将需要更多的内存。

但是同时,是否不需要知道在0xfa3d2f10存储什么类型,以便能够解释该位置的字节?例如,要知道接下来的字节构成String堆上a的规范吗?

memory types rust

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

Rust的ref关键字是否可以避免?

为什么Rust有ref关键字?可以

match value.try_thing() {
    &Some(ref e) => do_stuff(e),
    // ...
}
Run Code Online (Sandbox Code Playgroud)

不能由

match value.try_thing() {
    &Some(e) => do_stuff(&e),
    // ...
}
Run Code Online (Sandbox Code Playgroud)

language-design pattern-matching rust

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

可以告诉 pip 或 Poetry 不要安装 GPL 许可的软件包吗?

在最近的一次发布审查中,我们惊讶地发现一些 GPL 包已作为可传递依赖项安装。有没有办法将 pip 或诗歌安装配置为在某些许可证类型上失败?我们的旧服务使用 pip,而新服务使用诗歌。或者,是否至少有一种列出所有依赖项(包括传递依赖项)的许可证的好方法?

python pip pypi python-poetry

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

一对函数的数据类型?

我有一个数据类型,它是一对可链接的函数。在伊德里斯这是

data Foo i o = MkFoo (i -> ty) (ty -> o)
Run Code Online (Sandbox Code Playgroud)

我希望这在 Haskell 中意味着什么是相当明显的。这是一个广泛使用的构造,也许有名字?

haskell functional-programming idris

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

为什么 Rust 期望 () 应该布尔值?

我的 rust 代码应该返回一个布尔值,但由于某种原因, () 是预期的。这是怎么回事?

fn create_file(path: &Path) -> bool {
    // if file already exist
    if path.is_file(){
        false
    }
    let mut file = File::create(path);
    true
}
Run Code Online (Sandbox Code Playgroud)

错误:

error[E0308]: mismatched types
--> src/main.rs:53:9
    |
 52 | /     if path.is_file(){
 53 | |         false
    | |         ^^^^^ expected `()`, found `bool`
 54 | |     }
    | |     -- help: consider using a semicolon here
    | |_____|
    |       expected this to be `()`
Run Code Online (Sandbox Code Playgroud)

但是如果你加上“;” 在 false 之后,一切仍然有效。

rust

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

为什么就地突变用“IO”表示?

为什么可变数据结构和其他可变性用IO函数式语言来表示?我正在看例如 Haskell'sIORef或 Idris' IOArray

我不认为这是一个历史或设计问题。我不太明白为什么IO适合突变 - 或者更确切地说,为什么突变封装在IO.

language-agnostic haskell functional-programming in-place mutation

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

为什么我们可以把bool扔给str?

我们知道如何bool()作用于各种Python对象,如str,int,list.

这是一个相反的问题.

您可以将bool转换为int as

>>> int(True)
1
>>> int(False)
0
Run Code Online (Sandbox Code Playgroud)

我认为有点意义,但我们得到了字符串

>>> str(False)
'False'
>>> str(True)
'True'
Run Code Online (Sandbox Code Playgroud)

我没有得到,因为它首先似乎暗示了False和之间的某种关系'False',这在代码层面上似乎只是相关的.如果以这种方式处理代码中的内容,那么它是如何工作的......

>>> str(not True)
'False'
Run Code Online (Sandbox Code Playgroud)

其次,它的一致性并不明显,因为

>>> bool(str(False))
True
Run Code Online (Sandbox Code Playgroud)

我的问题是...有没有我们允许投一个原因bool,以str这种方式?list例如,不允许它......

>>> list()
[]
>>> bool()
False
>>> bool(list())
False
>>> list(bool())
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'bool' object is not iterable
Run Code Online (Sandbox Code Playgroud)

python truthiness

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

mypy:如何在可调用类型上应用 *args?

我有一个如下所示的功能,

def run_the_f(f):
  # run f function after some validation
Run Code Online (Sandbox Code Playgroud)

根据某些条件,f 函数的签名会发生如下变化f(1.0), f(1.0,2.0), f(1.0,2.0,3.0,..)。换句话说,f 中输入参数的数量可以变化,类似于pyspark 中的 udf f

我正在使用 mypy 并且我在下面尝试了失败,

def run_the_f(f: Callable[[*float],float]):
  # run f after some validation
Run Code Online (Sandbox Code Playgroud)

有人可以支持在 Callable 中填写什么吗?

python mypy python-typing

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