1) 这是一个字面量,其中%
后跟r(正则表达式)、w(数组)、q(字符串)等不同的字面量。
2)
ruby-1.9.2-p136 :001 > %w{1 2 3}
=> ["1", "2", "3"]
ruby-1.9.2-p136 :002 > %w[1 2 3]
=> ["1", "2", "3"]
ruby-1.9.2-p136 :008 > %w!a s d f!
=> ["a", "s", "d", "f"]
ruby-1.9.2-p136 :009 > %w@a s d f@
=> ["a", "s", "d", "f"]
因此,您可以看到只要标记内容的开头和结尾,就可以使用任何字符。
3)
以下是其他一些示例:
字符串:(%q或%Q)
ruby-1.9.2-p136 :016 > %Q[ruby is cool]
=> "ruby is cool"
ruby-1.9.2-p136 :017 > %q[ruby is "cool"]
=> "ruby is \"cool\""
正则表达式:(%r)
ruby-1.9.2-p136 :019 > %r[(\w+)]
=> /(\w+)/
Sys命令:(%x)
ruby-1.9.2-p136 :020 > %x[date]
=> "Tue Mar 29 12:55:30 EDT 2011\n"
4)它们不能嵌套,因为%w
表示分隔的白空格数组。因此,如果您尝试进行多层次的操作,会出现以下情况:
ruby-1.9.2-p136 :003 > %w{1 %w{2 3 4} 5}
=> ["1", "%w{2", "3", "4}", "5"]
为了实现这个目标,你需要使用更冗长的语法:
ruby-1.9.2-p136 :011 > [1, [2,3,4], 5]
=> [1, [2, 3, 4], 5]
%
,而是Q
,例如Q[A literal string]
,Q:ww{a list of words}
(或其简写形式<a list of words>
),等等。 - uzluisf