为什么在rails中使用%w []?

时间:2016-09-03 05:59:02

标签: ruby-on-rails ruby

为什么你会使用%w []考虑Rails中的数组是类型无关的?

3 个答案:

答案 0 :(得分:4)

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

%w(abc def xyz)

而不是

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

答案 1 :(得分:3)

重复的问题

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

有关详情,请点击https://simpleror.wordpress.com/2009/03/15/q-q-w-w-x-r-s/

这些是ruby中字符串百分比的类型:

%w : Array of Strings
%i : Array of Symbols
%q : String
%r : Regular Expression
%s : Symbol
%x : Backtick (capture subshell result)

我们举一些例子 你有一些字符集执行像

这样的段落
Thanks for contributing an answer to Stack Overflow!

所以当你尝试

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

然后你会得到像

这样的输出
=> ["Thanks", "for", "contributing", "an", "answer", "to", "Stack", "Overflow!"] 

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

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

输出

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

这里的ruby解释器将段落与输入中的空格分开。如果你在单词结束后给\,那么它将下一个单词与该单词合并,并在数组中作为字符串类型元素推送。

如果可以使用如下

%w[2 4 5 6]

如果您将使用

%w("abc" "def")

然后输出

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

答案 2 :(得分:1)

%w(abc def xyz)是[" abc"," def"," xyz"]的快捷方式。这意味着它是一个用空格而不是用逗号分隔的字符串数组的符号。