我正在调用传递一些键/值对的第三方API(用PHP编写).
此代码有效:
h = Hash.new
h['first_name'] = "Firstname"
h['last_name'] = "Lastname"
APICall([h]) # Record gets created
Run Code Online (Sandbox Code Playgroud)
这不是:
h = {'first_name' => "Firstname", 'last_name' => "Lastname"}
APICall([h]) # Record does not get created
Run Code Online (Sandbox Code Playgroud)
当我在两个实例中将Hash转储到控制台时,我获得了相同的数据结构.那么为什么第一种方式起作用但第二种方式不起作用呢?
编辑:不确定这是否重要,但我使用的是Ruby 1.8.7p72/Linux.另外一个键/值对是Base64编码的图像串.
正如类的文档Hash
所述:
[](*args) public
创建一个用给定对象填充的新哈希。相当于文字 { key => value, \xe2\x80\xa6 }。在第一种形式中,键和值成对出现,因此必须有偶数个参数。第二种和第三种形式采用单个参数,该参数可以是键值对数组,也可以是可转换为哈希的对象。
\n\nHash["a", 100, "b", 200] #=> {"a"=>100, "b"=>200}\nHash[ [ ["a", 100], ["b", 200] ] ] #=> {"a"=>100, "b"=>200}\nHash["a" => 100, "b" => 200] #=> {"a"=>100, "b"=>200}\n
Run Code Online (Sandbox Code Playgroud)\n\nhttp://apidock.com/ruby/Hash/%5B%5D/class
\n\n所以至少Hash[]
应该有相同的行为{...}