百分号字面量
优质
小牛编辑
134浏览
2023-12-01
百分号字面量
只有当字符串中同时存在插值与双引号,且是单行时,才使用%()
(%Q
的简写形式)。多行字符串,倾向使用 heredocs。# 差 - 不存在插值
%(<div class="text">Some text</div>)
# 应当使用 '<div class="text">Some text</div>'
# 差 - 不存在双引号
%(This is #{quality} style)
# 应当使用 "This is #{quality} style"
# 差 - 多行字符串
%(<div>\n<span class="big">#{exclamation}</span>\n</div>)
# 应当使用 heredocs
# 好 - 同时存在插值与双引号,且是单行字符串
%(<tr><td class="name">#{name}</td>)
避免使用%()
或%q
,除非字符串同时存在'
与"
。优先考虑更具可读性的常规字符串,除非字符串中存在大量需要转义的字符。# 差
name = %q(Bruce Wayne)
time = %q(8 o'clock)
question = %q("What did you say?")
# 好
name = 'Bruce Wayne'
time = "8 o'clock"
question = '"What did you say?"'
quote = %q(<p class='quote'>"What did you say?"</p>)
只有当正则表达式中存在一个或以上的/
字符时,才使用%r
。# 差
%r{\s+}
# 好
%r{^/(.*)$}
%r{^/blog/2011/(.*)$}
除非调用的命令使用了反引号(这种情况并不多见),否则不要使用%x
。# 差
date = %x(date)
# 好
date = `date`
echo = %x(echo `date`)
- 针对构建字符串的
%q
,%Q
字面量,使用()
。 - 针对构建数组的
%w
,%i
,%W
,%I
字面量,使用[]
,以与常规的数组字面量保持一致。 - 针对构建正则的
%r
字面量,使用{}
,此乃惯例。 - 针对
%s
,%x
等其他字面量,使用()
。
# 差
%q{"Test's king!", John said.}
# 好
%q("Test's king!", John said.)
# 差
%w(one two three)
%i(one two three)
# 好
%w[one two three]
%i[one two three]
# 差
%r((\w+)-(\d+))
%r{\w{1,2}\d{2,5}}
# 好
%r{(\w+)-(\d+)}
%r|\w{1,2}\d{2,5}|
- 针对构建字符串的