我想通过匹配变量中存储的输入来实现匹配/大小写。预期的逻辑应该是这样的:
match x:
case y:
print(...)
case z:
print(...)
Run Code Online (Sandbox Code Playgroud)
事实证明这个方法行不通。
它会导致此错误:“仅在最后一个 case 语句中才允许不可反驳的模式”,
我相信会发生这种情况,因为不知何故,第一个 case 旁边的变量被分配给下一个匹配的变量的值:如果我去调试,通过在“case y”行中,y 的值更改为 x 中存储的值。
但是,如果一切都属于一个类,则不会发生这种情况,如下所示:
class Vars:
x = int(input())
y = int(input())
z = int(input())
match Vars.x:
case Vars.y:
print("something")
case Vars.z:
print("anything")
Run Code Online (Sandbox Code Playgroud)
这种方法不会导致任何错误。
这是为什么?我的意思是,是什么让类变量成为可反驳的模式?