Rails - 使用%W

时间:2010-12-15 22:06:09

标签: ruby-on-rails ruby-on-rails-3

我有以下哪种方法效果很好:

def steps
    %w[hello billing confirmation]
end

steps.first

但我想这样做:

  def step_title
    %w['Upload a photo' 'Billing Info' 'Confirmation Screen']
  end

steps.first

%w如何允许?我试过谷歌搜索,但谷歌对这些类型的角色很弱。

由于

4 个答案:

答案 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']就足够了。