You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取Ruby子类常量数组中与父类不相同的元素

解决方案

你可以直接利用Ruby数组的差集运算符-实现需求,代码如下:

Child::COLUMNS - Parent::COLUMNS

原理解释

  • Ruby 数组的-方法会返回新数组,仅保留原数组中不存在于参数数组里的元素
  • Ruby 中两个哈希对象只要所有键值对完全匹配,相等判断就会返回true,刚好适配当前场景的元素比较逻辑

通用封装方案

如果需要在多个继承自Parent的子类中复用这个逻辑,可以把方法封装到父类中,同时使用const_get的第二个参数关闭继承链查找,避免子类未定义COLUMNS时出现异常:

class Parent
  COLUMNS = [
    { column: 'type', type: 'String' }
  ]

  # 获取当前子类COLUMNS与父类COLUMNS的差集
  def self.unique_columns
    self.const_get(:COLUMNS, false) - Parent::COLUMNS
  end
end

class Child < Parent
  COLUMNS = [
    { column: 'type', type: 'String' },
    { column: 'user', type: 'String' },
    { column: 'password', type: 'String' }
  ]
end

# 调用方法直接得到结果
Child.unique_columns

内容的提问来源于stack exchange,提问作者Tilipim

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 06:45:04