我正在调用第三方API (用PHP编写),传递一些键/值对。
此代码适用于:
h = Hash.new
h['first_name'] = "Firstname"
h['last_name'] = "Lastname"
APICall([h]) # Record gets created这并不是:
h = {'first_name' => "Firstname", 'last_name' => "Lastname"}
APICall([h]) # Record does not get created当我在这两个实例中将哈希转储到控制台时,我得到了相同的数据结构。那么,为什么第一条路起作用,而第二条却行不通呢?
编辑:不确定这是否重要,但我使用的是Ruby1.8.7p72/ Linux。其中一个键/值对是Base64编码的图像字符串。
发布于 2012-02-21 18:25:28
正如Hash类的文档所述:
[](*args) public
创建一个由给定对象填充的新哈希。等效于文字{键=>值,…}.在第一种形式中,键和值成对出现,因此必须有偶数的参数。第二和第三种形式采用单个参数,它要么是键值对数组,要么是可转换为散列的对象。
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[]应该具有与{...}相同的行为。
发布于 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
https://stackoverflow.com/questions/9378624
复制相似问题