为什么你会使用%w []考虑Rails中的数组是类型无关的?
答案 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"]的快捷方式。这意味着它是一个用空格而不是用逗号分隔的字符串数组的符号。