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

Ruby中如何在%w语法里直接使用常量而无需#{...}插值?

核心结论
  • %w 是Ruby专门用于创建纯字面量字符串数组的语法,内部所有内容都会被当作原始字符串处理,不会解析常量、变量,也不会执行任何表达式求值,因此无法在不使用插值的情况下直接在%w中引用常量拿到对应值。
  • 实现你需求最简便的写法完全不需要用%w,直接写普通数组字面量即可:[C1, C2],运行后得到的就是你要的['vC1', 'vC2']格式的数组。
补充说明
  • 你提到的%w("#{C1}" "#{C2}")写法实际是错误的:%w 会把引号也识别为字符串的一部分,最终得到的数组元素是带双引号的"\"vC1\"",和你预期的纯值不符,不要使用这种写法。
  • 如果需要批量读取多个有固定命名规律的常量,可以用反射方法简化代码,比如针对C1、C2这种前缀加数字的常量,可以这么写:
# 批量读取C1到C2的常量值生成数组
arr = (1..2).map { |i| Object.const_get("C#{i}") }

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 09:30:02