Ruby Hash.new vs Hash文字

Ana*_*hah 12 ruby api hash

我正在调用传递一些键/值对的第三方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编码的图像串.

pho*_*oet 1

正如类的文档Hash所述:

\n\n

[](*args) public

\n\n

创建一个用给定对象填充的新哈希。相当于文字 { key => value, \xe2\x80\xa6 }。在第一种形式中,键和值成对出现,因此必须有偶数个参数。第二种和第三种形式采用单个参数,该参数可以是键值对数组,也可以是可转换为哈希的对象。

\n\n
Hash["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\n

http://apidock.com/ruby/Hash/%5B%5D/class

\n\n

所以至少Hash[]应该有相同的行为{...}

\n

  • 这和问题有什么关系? (6认同)
  • 我所知道的每个实现对于问题中描述的情况都会产生完全相同的结果。 (2认同)