我打電話給第三方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