小编lin*_*k89的帖子

Python 中类型友好的委托

考虑以下代码示例

def sum(a: int, b: int):
  return a + b

def wrap(*args, **kwargs):
  # delegate to sum
  return sum(*args, **kwargs)
Run Code Online (Sandbox Code Playgroud)

除了类型提示丢失之外,代码运行良好。*args, **kwargs在 Python 中用来实现委托模式是很常见的。如果有一种方法可以在使用它们时保留类型提示,那就太好了,但我不知道是否可能以及如何实现。

python python-3.x python-typing

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

找不到匿名类的匹配构造函数

考虑以下代码示例

class A {
  int data
}


class B extends A {}
def o1 = new B(data: 1)
// This works correctly.


def o2 = new A(data:1) {}
// This will throw the following error
// Exception thrown
//
// groovy.lang.GroovyRuntimeException: Could not find matching constructor for: A(LinkedHashMap)
//  at ConsoleScript2$1.<init>(ConsoleScript2)
//  at ConsoleScript2.run(ConsoleScript2:11)
//  at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
//  at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:64)
//  at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
Run Code Online (Sandbox Code Playgroud)

对我来说,匿名类应该与命名类相同。但事实证明,Groovy 对待它们的方式有所不同。我想知道如何解决它。谢谢。

groovy

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

我可以使用 Typing.Callable 类型自动注释函数吗?如何?

假设我们为回调定义一个类型,如下所示:

CallbackFn = Callable[[str, str, int, int], None]
Run Code Online (Sandbox Code Playgroud)

当我想要实现回调函数并使用外部工具对其进行类型检查时CallbackFn,我必须显式注释类型:

def my_callback(s1: str, s2: str, i1: int, i2: int) -> None:
  ...
Run Code Online (Sandbox Code Playgroud)

有什么方法可以使用定义的类型提示来CallbackFn注释函数(例如def my_callback(s1,s2,i1,i2) as CallbackFn:)以避免显式注释工作?

python python-typing

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

为什么空变量的 wc -l 结果为 1

给出以下 bash 代码

grep match_nothing file.txt | wc -l
Run Code Online (Sandbox Code Playgroud)

结果0是正确的。但是下面的代码

LINES=$(grep match_nothing file.txt)
wc -l <<< "$LINES"
Run Code Online (Sandbox Code Playgroud)

将返回 1。为什么会发生这种情况以及我该如何纠正。

更新:

这个问题只是grep作为一个例子。让我困惑的是为什么将输出分配给变量会导致不同的结果。

bash

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

标签 统计

python ×2

python-typing ×2

bash ×1

groovy ×1

python-3.x ×1