关于ruby:你为什么在rails中使用%w []?

Why do you use %w[] in rails?

考虑到Rails中的数组是不可知类型,您为什么要使用%w[]?


这是定义字符串数组的最有效方法,因为您不必使用引号和逗号。

1
%w(abc def xyz)

而不是

1
['abc', 'def', 'xyz']


重复问题

1
2
http://stackoverflow.com/questions/1274675/what-does-warray-mean
http://stackoverflow.com/questions/5475830/what-is-the-w-thing-in-ruby

有关更多详细信息,请访问https://simperror.wordpress.com/2009/03/15/q-q-w-w-x-r-s/

以下是Ruby中的百分比字符串类型:

1
2
3
4
5
6
%w : Array of Strings
%i : Array of Symbols
%q : String
%r : Regular Expression
%s : Symbol
%x : Backtick (capture subshell result)

举个例子您有一些字符集,可以执行以下段落:

1
Thanks for contributing an answer to Stack Overflow!

所以当你尝试

1
%w(Thanks for contributing an answer to Stack Overflow!)

然后你会得到输出

1
=> ["Thanks","for","contributing","an","answer","to","Stack","Overflow!"]

如果将某些集合或单词用作数组中的单独元素,则应使用让我们举个例子

1
%w(Thanks for contributing an answer to Stack\ Overflow!)

输出将是

1
=> ["Thanks","for","contributing","an","answer","to","Stack Overflow!"]

这里Ruby解释器将段落与输入中的空格分开。如果在单词结尾后给出,则它将下一个单词和该单词合并,并作为数组中的字符串类型元素进行推送。

如果可以如下使用

1
%w[2 4 5 6]

如果你要用

1
%w("abc""def")

那么输出将是

1
=> [""abc"",""def""]


%w(abc def xyz)是["abc"、"def"、"xyz"]的快捷方式。也就是说,它是一种表示法,可以编写一个字符串数组,用空格而不是逗号分隔,字符串周围没有引号。