【问题标题】:Node Pattern Rubocop节点模式 Rubocop
【发布时间】:2020-11-05 16:10:57
【问题描述】:

无法弄清楚如何匹配枚举选项的节点模式。

我要匹配的代码,具有前缀的枚举:true(或作用域:true 用于更高版本):

enum bla: { active: 0, not_active: 1 }, _prefix:true

将得到节点为:

ruby-parse -e 'enum bla: { active: 0, not_active: 1 }, _prefix:true'

(send nil :enum
  (hash
    (pair
      (sym :bla)
      (hash
        (pair
          (sym :active)
          (int 0))
        (pair
          (sym :not_active)
          (int 1))))
    (pair
      (sym :_prefix)
      (true))))

我的模式:

'(send nil? :enum (hash (pair (sym {:_prefix :true}))))'

尝试了一堆没有 sym 和 nil/_ 的版本。

我在这个匹配中做错了什么?是否需要跳过前缀节点之前的节点?

【问题讨论】:

    标签: ruby-on-rails rubocop


    【解决方案1】:

    您想使用any order <> 进行关键字参数查找:

    (send nil? :enum (hash <(pair (sym :_prefix) true) ...>))
    

    此外,此模式中的 true 表示节点为 true_type?,因此该节点对应于 Ruby 中的文字 true

    你可以看到it in action

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-10-21
      • 1970-01-01
      • 1970-01-01
      • 2018-07-04
      • 1970-01-01
      • 1970-01-01
      • 2017-01-26
      相关资源
      最近更新 更多