class Prism::Pattern

Pattern 是一个封装了 Ruby 模式匹配表达式的对象。该表达式通常会传递给 `case` 表达式内的 `in` 子句或向右赋值表达式。例如,在以下代码片段中

case node
in ConstantPathNode[ConstantReadNode[name: :Prism], ConstantReadNode[name: :Pattern]]
end

模式是 ConstantPathNode[...] 表达式。

模式会被编译成一个可以通过运行 compile 方法来响应 `call` 的对象。此方法本身将再次通过 Prism 来解析表达式为一棵树,然后遍历该树以生成必要的调用对象。例如,如果你想将上面的表达式编译为可调用对象,你可以这样做:

callable = Prism::Pattern.new("ConstantPathNode[ConstantReadNode[name: :Prism], ConstantReadNode[name: :Pattern]]").compile
callable.call(node)

compile 返回的可调用对象保证使用一个参数响应 `call`,该参数是要匹配的节点。它也保证响应 ===,这意味着它本身可以在 `case` 表达式中使用,例如:

case node
when callable
end

如果给初始化器的查询无法编译成有效的匹配器(要么是因为语法错误,要么是因为使用了我们尚不支持的语法),则会抛出 Prism::Pattern::CompilationError 异常。