我想将此现有代码转换为使用模式匹配:
if isinstance(x, int):
pass
elif isinstance(x, str):
x = int(x)
elif isinstance(x, (float, Decimal)):
x = round(x)
else:
raise TypeError('Unsupported type')
如何编写带有模式匹配的实例检查,以及如何同时测试多种可能的类型,如(浮点数、十进制)
?
这是使用匹配和大小写的等效代码:
match x:
case int():
pass
case str():
x = int(x)
case float() | Decimal():
x = round(x)
case _:
raise TypeError('Unsupported type')
PEP 634指定使用类模式执行isinstance()检查。要检查str的实例,请编写case str(): 。请注意,括号是必不可少的。这就是语法如何确定这是一个类模式。
为了一次检查多个类,PEP 634使用运算符提供or模式。例如,要检查对象是float还是Decimal的实例,请编写以下内容: 。与之前一样,括号是必不可少的。
我无法运行此代码: 我在Python中找不到匹配关键字。 我在这里找到的:https://www.python.org/dev/peps/pep-0622/#the-match语句 有什么想法吗?
问题内容: 我正在尝试使用该包将Go结构转换为JSON,但我得到的只是。我敢肯定这是完全显而易见的,但我看不到。 然后,当我尝试运行它时,我得到以下信息: 问题答案: 您需要导出的字段,以便在包装可以看到它。将字段重命名为。 输出:
问题内容: 我试图在Go中创建一个通用方法,该方法将填充来自的使用数据。例如,方法签名和用法可能类似于: 我知道可以使用JSON作为中介来完成;还有另一种更有效的方法吗? 问题答案: 最简单的方法是使用https://github.com/mitchellh/mapstructure 如果您想自己做,则可以执行以下操作: http://play.golang.org/p/tN8mxT_V9h
问题内容: 有没有一种方法可以将Swift结构的地址转换为无效的UnsafeMutablePointer? 我尝试了一下但没有成功: 谢谢! 编辑: 我实际上正在尝试 将上下文 移植到Swift中 学习CoreAudio 的第一个示例。 这是我到目前为止所做的: 我正在努力留在Swift中,但是如果事实证明这是一个问题而不是优势,那么我最终将链接到C函数。 编辑:底线 如果您因为试图在Swift中
我试图在Go中创建一个泛型方法,该方法将使用来自< code > map[string]interface { } 的数据填充< code>struct。例如,方法签名和用法可能如下所示: 我知道使用JSON作为中介可以做到这一点;有没有其他更有效的方法?
我一直在将if-elif链转换为结构模式匹配,但在反向测试中遇到了困难。 很容易生成与任何支持的模式(文本、类、映射、序列等)匹配的案例。我如何证明一个否定的匹配? 例如,当对象的类型不匹配时,我需要强制它: