我打电话给第三方API(用PHP编写)传递一些键/值对。Ruby Hash.new vs哈希文字
此代码:
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
当我转储哈希在这两个实例中,我得到了相同的数据结构的控制台。那么为什么第一种方法可行,但第二种方法不行?
编辑:不知道这是否重要,但我使用的是Ruby 1.8.7p72/Linux。另外一个键/值对是Base64编码的图像字符串。
有没有理由这会发生。在我的测试中,'Hash.object_id'返回与'Hash.new.class.object_id'和'{} .class.object_id'相同的值。他们都是同一班。你是否从API调用中收到任何错误? – Brandan 2012-02-21 13:52:14
他们看起来和我一样。如果这是你的所有代码,我不知道为什么一个人会工作,而另一个不会。如果这是一个Rails应用程序,我会希望看到使用Hash需要[HashWithIndifferentAccess](http://as.rubyonrails.org/classes/HashWithIndifferentAccess.html)(这只是一个预感,如果你的代码和上面一样,这不会是你的问题)。 – gar 2012-02-21 13:55:27
@Brandan:不幸的是没有API返回的错误。 – 2012-02-21 13:56:16