我有以下哪种方法效果很好:
def steps
%w[hello billing confirmation]
end
steps.first
但我想这样做:
def step_title
%w['Upload a photo' 'Billing Info' 'Confirmation Screen']
end
steps.first
%w如何允许?我试过谷歌搜索,但谷歌对这些类型的角色很弱。
由于
答案 0 :(得分:51)
%w
创建一个“单词数组”,并使用空格分隔每个值。由于你想要分隔另一个值(在这种情况下,引号外的空格),只需使用标准数组:
['Upload a photo', 'Billing Info', 'Confirmation Screen']
答案 1 :(得分:32)
%w()
是一个“单词数组” - 元素由空格分隔。
还有其他一些事情:
%r()
是另一种编写正则表达式的方法。
%q()
是另一种编写单引号字符串的方法(可以是多行的,这很有用)
%Q()
提供双引号字符串
%x()
是一个shell命令。
答案 2 :(得分:9)
您也可以使用反斜杠来转义空格:
%w@foo\ bar bang@
与:
相同[ 'foo bar', 'bang' ]
在您的示例中,我不会使用%w
表示法,因为它不是那么清楚。
PS。我喜欢混合分隔符,只是为了惹恼团队成员:) 像这样:
%w?foo bar?
%w|foo bar|
%w\foo bar\
%w{foo bar}
答案 3 :(得分:4)
%w[hello billing confirmation]
是["hello", "billing", "confirmation"]
的语法糖。它告诉Ruby将输入字符串分解为基于空格的单词,并返回单词数组。
如果您的特定用例意味着允许数组中的值包含空格,则不能使用%w
。
在您的情况下,['Upload a photo', 'Billing Info', 'Confirmation Screen']
就足够了。