通过并行分配遍历哈希列表

时间:2020-04-14 10:34:48

标签: ruby iterator parallel-assignment

我刚刚看过这段代码(简体):

def something
  yield(key1: 1, key2: 2)
end

something { |key1: key1, key2: key2|  puts "key1:#{key1}, key2:#{key2}" }
# (irb):351: warning: circular argument reference - key1
# (irb):351: warning: circular argument reference - key2
# key1:1, key2:2

正如预期的那样,这里有一个循环引用...但是请稍等! key1key2的定义正确!

好吧,所以它们是在之前定义的,也就是说,我可以完全摆脱哈希,对吗?

something { |key1, key2|  puts "key1:#{key1}, key2:#{key2}" }
# key1:{:key1=>1, :key2=>2}, key2:

不,循环引用很棒!但是...并行分配不起作用,第一个变量获取整个哈希。

所以我尝试多清理一些东西:

something { |key1: nil, key2: nil|  puts "key1:#{key1}, key2:#{key2}" }
# key1:1, key2:2

现在可以使用了。但是为什么根本需要这些默认值?

这里到底发生了什么? 是否有更好的方法遍历散列列表以扩展散列? 指向文档的指针也将不胜感激。

1 个答案:

答案 0 :(得分:2)

现在可以使用了。但是为什么根本需要这些默认值?

不是,您可以省略默认值:

{
  "expo": {
    "…": "…",
    "android": {
      "package": "…",
      "googleServicesFile": "./google-services.json",
      "config": {
        "googleSignIn": {
          "apiKey": "KEY_KEY_KEY_KEY_KEY"
        }
      }
相关问题