我刚刚看过这段代码(简体):
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
正如预期的那样,这里有一个循环引用...但是请稍等! key1
和key2
的定义正确!
好吧,所以它们是在之前定义的,也就是说,我可以完全摆脱哈希,对吗?
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
现在可以使用了。但是为什么根本需要这些默认值?
这里到底发生了什么? 是否有更好的方法遍历散列列表以扩展散列? 指向文档的指针也将不胜感激。
答案 0 :(得分:2)
现在可以使用了。但是为什么根本需要这些默认值?
不是,您可以省略默认值:
{
"expo": {
"…": "…",
"android": {
"package": "…",
"googleServicesFile": "./google-services.json",
"config": {
"googleSignIn": {
"apiKey": "KEY_KEY_KEY_KEY_KEY"
}
}