Ruby 里的 %Q, %q, %W, %w, %x, %r, %s, %i

%Q

用于替代双引号的字符串. 当你需要在字符串里放入很多引号时候, 可以直接用下面方法而不需要在引号前逐个添加反斜杠 (")

2.3.0 :015 > %Q(rudy said, "i'm not ruby")
 => "rudy said, \"i'm not ruby\""

(...)也可用其他非数字字母的符号或成对的符号代替, 诸如#...#,!...!, +...+,{...},[...], <...>,/.../等.

2.3.0 :016 > %Q/rudy said, "i'm not ruby"/
 => "rudy said, \"i'm not ruby\""
2.3.0 :017 > %Q#rudy said, "i'm not ruby"#
 => "rudy said, \"i'm not ruby\""
2.3.0 :018 > %Q!rudy said, "i'm not ruby"!
 => "rudy said, \"i'm not ruby\""

%q

与%Q类似,用于代替单引号的字符串

2.3.0 :031 > what_ruby = 'this is ruby'
 => "this is ruby"
2.3.0 :032 > %Q!rudy said, "#{what_ruby}"!
 => "rudy said, \"this is ruby\""
2.3.0 :033 > %q!rudy said, "#{what_ruby}"!
 => "rudy said, \"\#{what_ruby}\""

(...)也可用其他非数字字母的符号或成对的符号代替, 诸如#...#,!...!, +...+,{...},[...], <...>,/.../等.

%W,%w

%W语法近似于%Q, 用于表示其中元素被双引号括起的数组.
%w语法近似于%q, 用于表示其中元素被单引号括起的数组.

2.3.0 :031 > what_ruby = 'this is ruby'
 => "this is ruby"
2.3.0 :034 > %W(hello,kitty,cat,dog,what_ruby)
 => ["hello,kitty,cat,dog,what_ruby"]          ###不能用逗号隔开,只能用空格
2.3.0 :035 > %W(hello kitty cat dog what_ruby)
 => ["hello", "kitty", "cat", "dog", "what_ruby"]
2.3.0 :036 > %W(hello kitty cat dog #{what_ruby})
 => ["hello", "kitty", "cat", "dog", "this is ruby"]###双引号中可以被解析
2.3.0 :037 > %w(hello kitty cat dog #{what_ruby})
 => ["hello", "kitty", "cat", "dog", "\#{what_ruby}"]###单引号中不能被解析,被转义了。

%x

用于执行一段shell脚本,并返回输出内容。

2.3.0 :038 > %x(route -n)
 => "Kernel IP routing table\nDestination     Gateway         Genmask         Flags Metric Ref    Use Iface\n0.0.0.0         10.6.0.1        0.0.0.0         UG    100    0        0 eth0\n10.6.0.0        0.0.0.0         255.255.252.0   U     0      0        0 eth0\n"
2.3.0 :039 > %x(echo "hello world")
 => "hello world\n"

%r

语法近似于%Q, 用于正则表达式.

2.3.0 :031 > what_ruby = 'this is ruby'
 => "this is ruby"
2.3.0 :041 > %r(/home/#{what_ruby})
 => /\/home\/this is ruby/

%s

用于表示symbol, 但是不会对其中表达式等内容进行转化

2.3.0 :031 > what_ruby = 'this is ruby'
 => "this is ruby"
2.3.0 :042 > %s(a b c)
 => :"a b c"
2.3.0 :043 > %s(abc)
 => :abc
2.3.0 :044 > %s(what_ruby)
 => :what_ruby
2.3.0 :045 > %s(#{what_ruby})
 => :"\#{what_ruby}"

%i

Ruby 2.0 之后引入的语法, 用于生成一个symbol数组

2.3.0 :031 > what_ruby = 'this is ruby'
 => "this is ruby"
2.3.0 :046 > %i(a b c)
 => [:a, :b, :c]
2.3.0 :047 > %i(a b c #{what_ruby})
 => [:a, :b, :c, :"\#{what_ruby}"]

你可能感兴趣的:(Ruby 里的 %Q, %q, %W, %w, %x, %r, %s, %i)