【问题标题】:Why do you use %w[] in rails?为什么在 Rails 中使用 %w[] ?
【发布时间】:2017-01-11 05:44:27
【问题描述】:

考虑到 Rails 中的数组与类型无关,为什么还要使用 %w[]?

【问题讨论】:

    标签: ruby-on-rails ruby


    【解决方案1】:

    重复的问题

    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】:

      %w(abc def xyz) 是 ["abc", "def","xyz"] 的快捷方式。意思是写一个由空格而不是逗号分隔且周围没有引号的字符串数组是一种表示法。

      【讨论】:

        【解决方案3】:

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

        %w(abc def xyz)
        

        代替

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

        【讨论】:

        • 啊有道理:)
        猜你喜欢
        • 1970-01-01
        • 2011-03-25
        • 1970-01-01
        • 1970-01-01
        • 2016-08-23
        • 2018-08-15
        • 2015-01-05
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多