我定义了俩结构体变量:
t1 = Inheritance(Word("a"), Word("b"))
t2 = Inheritance(Word("b"), Word("c"))
又有模式匹配规则:
function infer(t1, t2)
@match (t1, t2) begin
(Inheritance(M, P), Inheritance(S, M)) => println("match 1")
(Inheritance(P, M), Inheritance(M, S)) => println("match 2")
_ => nothing
end
end
接着运行 infer(t1, t2)
,我本想 M
限定了相同成员的位置,因此它应该只能匹配第二个,可它却匹配了第一个!实在是出乎意料,因此程序也出错了。这两个Pattern
都能匹配到,但是我希望能按顺序只匹配第二个 Pattern
应该怎么做?
Debug
发现 Pattern
中的 M
并没有起到限制成员位置的作用,试了Match.jl
和 MLStyle.jl
皆如此