gpt4 book ai didi

ruby - 为什么不能直接在 Ruby 中打印散列?

转载 作者:数据小太阳 更新时间:2023-10-29 08:07:19 25 4
gpt4 key购买 nike

为什么不能直接打印哈希。

p {:First=>1, :Second=>2}

syntax error, unexpected =>, expecting '}'

但是可以将它保存到一个变量然后打印那个变量吗?

my_hash = {:First=>1, :Second=>2}
p my_hash

{:First=>1, :Second=>2}

最佳答案

这似乎是因为 Ruby 很困惑,认为您正在将一个 block 传递给 p 方法。

p {:First=>1, :Second=>2}
SyntaxError: unexpected =>, expecting '}'

正如您从错误中看到的那样,它期待一个 ,您的第一个 key 的哈希火箭所在的位置。正如您已经发现的那样,您可以将其设置为一个变量并且它可以工作。但是如果使用括号,您也可以将散列传递给 p 方法而不将其设置为变量,因为 pputsprint 也只是方法。这是有效的,因为在 Ruby 中将 block 传递给方法需要它在括号之外,这样可以减少您要执行的操作的歧义。

p({:First=>1, :Second=>2})
{:First=>1, :Second=>2}
#=> {:First=>1, :Second=>2}

正如 tadman 在评论中指出的那样,您还可以省略括号和大括号,因为 Ruby 知道作为参数传递给方法的键/值对等同于传递散列,不会被误解为 block .

p :First => 1, :Second => 2
{:First=>1, :Second=>2}
#=> {:First=>1, :Second=>2}

关于ruby - 为什么不能直接在 Ruby 中打印散列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37629193/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com