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

4
为什么要使用%w[],既然Rails中的数组是类型不可知的呢?
3个回答

10

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

%w(abc def xyz)

与其

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

啊,有道理 :) - user3180

7

重复问题

https://dev59.com/YHM_5IYBdhLWcg3wrFMt
https://dev59.com/ym035IYBdhLWcg3wW-la

如果您需要更多详细信息,可以访问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!

所以,当你使用 < /p > 时,请注意
%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\""]

如果您不将URL标记为代码,以便可以单击它们进行跟踪,那就太好了。 - BenFenner

2

%w(abc def xyz)是["abc", "def","xyz"]的一种简写方式。这意味着它是一种标记,用于编写由空格分隔的字符串数组,而不是用逗号分隔,并且不需要在它们周围加上引号。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接