我打电话给第三方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
当我在两个实例中将哈希转储到控制台时,我得到相同的数据结构.那么为什么第一种方式是工作,但第二种不行?
编辑:不知道这是否重要,但我使用的是Ruby 1.8.7p72 / Linux.键/值对之一是Base64编码的图像字符串.
解决方法
作为Hash类的文档:
[](* args)public
创建用给定对象填充的新哈希值.相当于文字{key =>价值,…}.在第一种形式中,键和值成对出现,因此必须有偶数个参数.第二和第三个表单采用单个参数,它是键值对的数组或可转换为散列的对象.
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 []应该有与{…}相同的行为