【问题标题】:escaping ruby values in hash在哈希中转义红宝石值
【发布时间】:2015-01-09 18:07:10
【问题描述】:

我在声明 ruby​​ 哈希时尝试使用其他变量的值。正如我预期的那样,这些值现在正在被转义。我该如何解决这个问题?

变量

ipa_url、名称、版本和包标识符

代码

data = {
            plist: {
              dict: {
                key: 'items',
                array: {
                  dict: {
                    key: %w('assets','metadata'),
                    array: {
                      dict: [{ key:    %w('kind','url'),
                               string: %w('software-package',
                                          "#{ipa_url") },
                             { key:    %w('kind','url'),
                               string: %w('display-image',"#{icon_url.to_s}") },
                             { key:    %w('kind','url'),
                               string: %w('full-size-image',
                                          "#{icon_url}") }],
                      dict: { key: %w('bundle-identifier','bundle-version',
                                      'kind','title'),
                              string: %w("#{bundle-identifier}","#{version}",
                                         'software',"#{name}")
                      }
                    }
                  }
                }
              }
            }
          }

【问题讨论】:

  • 你确定你的意思是%w('assets','metadata')吗?你真的不想要%w(assets metadata) 或['assets','metadata'] 吗?
  • @muistooshort 你是对的,谢谢
  • 在提出这样的问题时,将数据样本减少到有效证明问题所需的最低限度。除此之外的任何事情都会减慢我们为您提供帮助的能力。
  • @AntarrByrd,如果你真的想使用%w(assets metadata),那么修正你的例子来反映这一点。不要让它保持错误和误导。

标签: ruby hashmap escaping


【解决方案1】:

%w 标识符用于从空格分隔的文本中创建一个数组:

%w(this is a test)
# => ["this", "is", "a", "test"]

如果你想在那里使用字符串插值,你应该改用%W:

variable = 'test'
%W(this is a #{variable})
# => ["this", "is", "a", "test"]

【讨论】:

    【解决方案2】:

    zenspider 详细介绍了这一点,但出于 SO 目的,以下是细分:

    %q(无插值)

    [6] pry(main)> hey
    => "hello"
    [7] pry(main)> hash = { 'hi' => %q("#{hey}", 'how are you') }
    => {"hi"=>"\"\#{hey}\", 'how are you'"}
    

    %Q(插值和反斜杠)

    [8] pry(main)> hash = { 'hi' => %Q("#{hey}", 'how are you') }
    => {"hi"=>"\"hello\", 'how are you'"}
    

    %(插值和反斜杠)

    [9] pry(main)> hash = { 'hi' => %("#{hey}", 'how are you') }
    => {"hi"=>"\"hello\", 'how are you'"}
    

    %W(interpolation) 如 Uri 所示:

    [7] pry(main)> hash = { 'hi' => %W(#{hey} how are you) }
    => {"hi"=>["hello", "how", "are", "you"]}
    

    【讨论】:

      猜你喜欢
      • 2012-12-19
      • 2011-08-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-04
      • 1970-01-01
      相关资源
      最近更新 更多