迭代哈希打印哈希?

Are*_*rte -1 ruby hash

我在Ruby中迭代了一堆嵌套的哈希:

@data.each do |key, value|
    puts "Key: #{key}"
    puts "Value: #{value}"
end
Run Code Online (Sandbox Code Playgroud)

与输出:

Key: 1.0
Value: {"label"=>"Default Label"}
{"1.0"=>{"label"=>"Default Label"}}
Run Code Online (Sandbox Code Playgroud)

现在我真的不明白为什么打印最后一行.当我从循环中删除两个"puts"调用时,它甚至会被打印出来.我试图在网上找到一些关于这种行为,但找不到任何东西.我可以用任何方式防止这种情况发生吗?或者我误解了哈希的"每个"调用?

Dav*_*ton 7

你在REPL做这个.

默认情况下,REPL返回(并打印)最后执行的语句的值.

在这种情况下,它each会返回它迭代的集合,因此您可以看到原始哈希值.

  • 为了防止我不是唯一一个不熟悉这个术语的人,"REPL"代表["Read,Eval,Print Loop"](http://en.wikipedia.org/wiki/Read%E2%80% 93eval%E2%80%93print_loop).在Ruby中,它通常指的是IRB或PRY. (2认同)