【发布时间】:2017-01-11 05:44:27
【问题描述】:
考虑到 Rails 中的数组与类型无关,为什么还要使用 %w[]?
【问题讨论】:
标签: ruby-on-rails ruby
考虑到 Rails 中的数组与类型无关,为什么还要使用 %w[]?
【问题讨论】:
标签: ruby-on-rails ruby
重复的问题
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\""]
【讨论】:
%w(abc def xyz) 是 ["abc", "def","xyz"] 的快捷方式。意思是写一个由空格而不是逗号分隔且周围没有引号的字符串数组是一种表示法。
【讨论】:
这是定义字符串数组最有效的方法,因为您不必使用引号和逗号。
%w(abc def xyz)
代替
['abc', 'def', 'xyz']
【讨论】: