5
鉴于括号在块变量
a = [[:a, :b, :c]]
1)I理解这个
a.each{|(x, y), z| p z} # => :b
有两个变量(x, y)
和z
,因此第三元件:c
被丢弃,并且z
比赛:b
。我明白这
a.each{|(x, y), z| p y} # => nil
是(x, y)
比赛:a
,而且因为它不是一个数组,没有元素吧,等y
比赛nil
。
但如何
a.each{|(x, y), z| p x} # => :a
工作?我希望返回nil
。
2)为什么返回值是这样的?
a.each{|(x, y)| p x} #=> :a
a.each{|(x, y)| p y} #=> :b
我希望他们都返回nil
。
好的,所以在第一种情况下,巧妙的分配会发生两次,在第二部分中,(x,y)=:结果x =:a和y = nil。我知道了。 – sawa
不错。我一直使用它,却没有意识到它与平行分配相关。我还发现一个博客称它为“解构”。 – Kelvin