【问题标题】:Associated array in RubyRuby 中的关联数组
【发布时间】:2015-12-06 11:09:18
【问题描述】:

我在 Ruby 中看到过这个 link 关于关联数组的内容,我知道,它完全像 php。

但是看看这段代码:

x=[1,"Jef",:three]

很明显x[1]="jef",但问题是: :three的作用是什么。 我猜它应该是一个零值的键,我把代码改成了这个

x=[1,"Jef",:three,4]

当我运行它时,我遇到了这个错误:

no implicit conversion of Symbol into Integer (TypeError)

那么:三个在这里的作用是什么?

【问题讨论】:

  • 了解 ruby​​ Symbols
  • " 它完全像 php" - 你链接到的答案,他们说它是 nothing 像 php。所以我不知道你是从哪里得出这个想法的。
  • 对于x = [555, 'Jeff', :three]x[1] 仍将产生"Jeff"。你怎么解释? :)

标签: ruby-on-rails


【解决方案1】:

我认为您将数组与哈希混淆了。在这个特定的例子中

x = [1,"Jef",:three,4]

碰巧x[1] 等于"Jef",但那是因为x 的第一个索引处的元素是"jeff"(这应该很明显,因为xArray),而不是因为每两个元素是键值对,如 aa Hash

错误

no implicit conversion of Symbol into Integer (TypeError)

可能是因为你尝试了x[:three]之类的东西,这显然是无效的。

如果您的 x 看起来像这样,这可能会起作用。

x = { 1 => "Jef", :three => 4 }

然后x[:three] 将产生所需的结果4

请记住,Ruby 中的 ArraysHashes 是两个不同的概念。

:three 是一个Symbol,本质上是带有少量twists 的字符串。

建议:如果您想学习基本的 Ruby 知识,可以阅读 Rubymonk。我有很棒的内容。

【讨论】:

    【解决方案2】:

    :three 是一个符号,它只是一个常规数组的常规成员。 Ruby 中的关联数组有所不同,它们被称为哈希。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-10-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-03
      相关资源
      最近更新 更多