首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ruby Hash.new与Hash文字

Ruby Hash.new与Hash文字
EN

Stack Overflow用户
提问于 2012-02-21 13:42:57
回答 2查看 14.7K关注 0票数 15

我正在调用第三方API (用PHP编写),传递一些键/值对。

此代码适用于:

代码语言:javascript
复制
h = Hash.new
h['first_name'] = "Firstname"
h['last_name'] = "Lastname"
APICall([h]) # Record gets created

这并不是:

代码语言:javascript
复制
h = {'first_name' => "Firstname", 'last_name' => "Lastname"}
APICall([h]) # Record does not get created

当我在这两个实例中将哈希转储到控制台时,我得到了相同的数据结构。那么,为什么第一条路起作用,而第二条却行不通呢?

编辑:不确定这是否重要,但我使用的是Ruby1.8.7p72/ Linux。其中一个键/值对是Base64编码的图像字符串。

EN

回答 2

Stack Overflow用户

发布于 2012-02-21 18:25:28

正如Hash类的文档所述:

[](*args) public

创建一个由给定对象填充的新哈希。等效于文字{键=>值,…}.在第一种形式中,键和值成对出现,因此必须有偶数的参数。第二和第三种形式采用单个参数,它要么是键值对数组,要么是可转换为散列的对象。

代码语言:javascript
复制
Hash["a", 100, "b", 200]             #=> {"a"=>100, "b"=>200}
Hash[ [ ["a", 100], ["b", 200] ] ]   #=> {"a"=>100, "b"=>200}
Hash["a" => 100, "b" => 200]         #=> {"a"=>100, "b"=>200}

http://apidock.com/ruby/Hash/%5B%5D/class

因此,至少Hash[]应该具有与{...}相同的行为。

票数 1
EN

Stack Overflow用户

发布于 2012-03-08 04:18:14

哈希文字直到v1.9才出现。您使用的是v1.8。

http://www.ruby-lang.org/en/news/2009/01/30/ruby-1-9-1-released/

在此链接中搜索“文字散列语法”:

http://svn.ruby-lang.org/repos/ruby/tags/v1_9_1_0/NEWS

下面是一个将特性移植到v1.8中的修补程序:

http://bugs.ruby-lang.org/issues/1183

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9378624

复制
相关文章

相似问题

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