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

Ruby中实现类似JavaScript展开运算符的方法

Ruby 中实现数组常量复用追加的简洁写法

%i是Ruby专门用于快速生成符号数组的字面量语法,本身不支持在内部直接展开其他数组,要实现「MAX_KEYS包含MIN_KEYS全部元素+追加额外元素」的效果,有两种常用的简洁兼容写法:

  • 数组直接拼接(全版本兼容,可读性最高)
    利用Ruby数组的+运算符生成新数组,最终对结果冻结即可,不会修改原MIN_KEYS的内容:
MIN_KEYS = %i[email password password_confirmation role].freeze
MAX_KEYS = (MIN_KEYS + %i[company_admin company_id]).freeze

最终生成的MAX_KEYS元素顺序和手动枚举的版本完全一致:先按原有顺序排列MIN_KEYS的所有元素,后面依次跟上追加的company_admin、company_id两个符号。

  • Splat展开写法(对齐JS展开运算符的书写逻辑,Ruby 2.0+ 支持)
    Ruby用*实现和JS...等价的数组展开能力,注意展开操作要写在普通数组字面量[]中,不能直接放在%i字面量内部:
MIN_KEYS = %i[email password password_confirmation role].freeze
MAX_KEYS = [*MIN_KEYS, :company_admin, :company_id].freeze

注意:不要用concat、<<这类会修改原数组的方法追加元素,因为MIN_KEYS调用了freeze,调用这类可变方法会直接抛出运行时错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.31 10:30:53