红宝石中%i或%I的含义是什么?
我搜索了谷歌
"%i or %I" ruby
但没有发现任何与红宝石有关的内容。
答案 0 :(得分:45)
%i[ ] # Non-interpolated Array of symbols, separated by whitespace
%I[ ] # Interpolated Array of symbols, separated by whitespace
我的搜索结果中的第二个链接http://ruby.zigzo.com/2014/08/21/rubys-notation/
IRB中的例子:
%i[ test ]
# => [:test]
str = "other"
%I[ test_#{str} ]
# => [:test_other]
答案 1 :(得分:5)
很难找到官方的Ruby文档(it's here)。在撰写本文时,当前版本为2.5.1,%i构造的文档可在Ruby's literals.的文档中找到
Ruby的%构造有一些令人惊讶的(至少对我来说!)变体。有一些常用的%i %q %r %s %w %x
表单,每个表单都有一个大写版本来启用插值。 (有关解释,请参阅Ruby literals docs。
但您可以使用多种类型的分隔符,而不仅仅是[]
。你可以使用任何类型的括号() {} [] <>
,和你可以使用(引用ruby文档)“百分比字符串分隔符的大多数其他非字母数字字符,例如”%“,”| “,”“^”等。“
因此%i% bish bash bosh %
与%i[bish bash bosh]
答案 2 :(得分:4)
与%w
和%W
类似'
和"
:
x = :test
# %w won't interpolate #{...} style strings, leaving as literal
%w[ #{x} x ]
# => ["\#{x}", "x"]
# %w will interpolate #{...} style strings, converting to string
%W[ #{x} x ]
# => [ "test", "x"]
现在与%i
和%I
相同:
# %i won't interpolate #{...} style strings, leaving as literal, symbolized
%i[ #{x} x ]
# => [:"\#{x}", :x ]
# %w will interpolate #{...} style strings, converting to symbols
%I[ #{x} x ]
# => [ :test, :x ]