首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >创建散列的快捷方式

创建散列的快捷方式
EN

Stack Overflow用户
提问于 2015-07-18 12:37:54
回答 3查看 856关注 0票数 6

我是鲁比的新手。我正在学习有关Rubymonk的教程,并且正在学习如何创建散列。你能告诉我为什么我不能创建没有key_value_pairs变量的散列。在我的抗拒代码的大脑看来,没有它的代码工作是合乎逻辑的,但它不能。

这不管用

代码语言:javascript
复制
def artax
  a = [:punch, 0]
  b = [:kick, 72]
  c = [:stops_bullets_with_hands, false]

  Hash[a,b,c]
end
p artax

这个很管用。

代码语言:javascript
复制
def artax
  a = [:punch, 0]
  b = [:kick, 72]
  c = [:stops_bullets_with_hands, false]
  key_value_pairs = [a, b, c]
  Hash[key_value_pairs]
end
p artax
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-07-18 12:48:53

请查看Hash::[]的文档,有三种方法将其称为:

  • 具有交替键和值的列表,如Hash[key1, value1, key2, value2, key3, value3]
  • 使用单个数组,包含包含键和值的数组,如Hash[[[key1, value1], [key2, value2], [key3, value3]]]
  • 使用可转换为散列的单个对象。

在第一种形式中,必须有偶数的论点,在第二种形式和第三种形式中,必须有一个论点。

在第一个例子中,您使用三个参数调用它,这既不是偶数,也不是1,因此,它不属于上述三种形式中的任何一种。如果您意外地使用了四个数组(或两个),即偶数,如果属于第一种形式,但是它不会像您期望的那样:

代码语言:javascript
复制
def artax
  a = [:punch, 0]
  b = [:kick, 72]

  Hash[a, b]
end
p artax
# { [:punch, 0] => [:kick, 72] }

在第二个示例中,使用一个数组调用它,该数组属于第二种形式。

票数 6
EN

Stack Overflow用户

发布于 2015-07-18 12:48:14

要使第一次成功,你必须写

代码语言:javascript
复制
def artax
  a = [:punch, 0]
  b = [:kick, 72]
  c = [:stops_bullets_with_hands, false]

  Hash[ [a,b,c] ]
end
票数 3
EN

Stack Overflow用户

发布于 2015-07-18 13:08:08

这就是你想做的吗?

代码语言:javascript
复制
def artax
  {punch: 0,
   kick: 72,
   stops_bullets_with_hands: false}
end
p artax
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31491249

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档