【问题标题】:Colon prefixed string in rubyruby 中的冒号前缀字符串
【发布时间】:2019-11-19 06:36:13
【问题描述】:

我是 Ruby 新手,刚刚看到这段代码 sn-p:

rr = {
  id: 215043,
  :'Official Name' => "Google, Inc."
}

最多的错误是这个:'Official Name' =>。它看起来像一个带空格的符号。

当我打印它时,我看到了:

{:id=>"215043", :"Official Name"=>"Google, Inc."}

请帮助我理解这一点。

【问题讨论】:

  • 考虑:"cat".to_sym #=> :cat"cat 9 lives".to_sym #=> :"cat 9 lives""9lives".to_sym #=> :"9lives"。你能从这些结果中推断出什么?

标签: ruby


【解决方案1】:

最多的错误是这个:'Official Name' =>。它看起来像一个带有空格的符号。

原来如此。

p :'Official Name'.class
# => Symbol

但是,在 Hash 文字中,您可以将冒号放在末尾,我认为这样读起来更好:

rr = {
  id: 215043,
  "Official Name": "Google, Inc.",
}

rr.keys.each {|key| p [key, key.class] }
# => [:id, Symbol]
#    [:"Official Name", Symbol]

为了将来的参考,一旦您习惯了official docs,就会很容易导航。在这种情况下,您需要点击doc/syntax/literals.rdoc 的链接,然后查看SymbolsHashes 上的部分。

【讨论】:

  • Also wild:x="Google"; :"#{x}, Inc." 也是有效的。
【解决方案2】:

这仍然是symbol

Ruby 允许您定义一个包含空格的符号,如果您将其括在这样的引号中。

查看this answer 以查看从字符串创建空格的符号示例。

【讨论】:

    猜你喜欢
    • 2013-12-19
    • 1970-01-01
    • 1970-01-01
    • 2016-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-31
    相关资源
    最近更新 更多