有一个数组
a = 1, 2, 3, 4
和一个枚举器:
e = a.map!
然后,通过反复调用e.next
,数组 a 被很好地销毁:
e.next #=> 1
a #=> [1, 2, 3, 4]
e.next #=> 2
a #=> [nil, 2, 3, 4]
e.next #=> 3
a #=> [nil, nil, 3, 4]
太搞笑了!但是当我尝试
e.next { |x| 2 * x } # => 4
我明白了
a #=> [nil, nil, nil, 4]
而不是想要的
a #=> [nil, nil, nil, 8]
我有什么误解?如何a.map!
用元素做我想做的事?
我的问题是,我不完全理解枚举数。例如,使用前面的代码,枚举器e
构成了一个后门a
:
e.each { 42 }
a #=> [42, 42, 42, 42]
我想知道,如何逐步使用 nil 以外的值来做到这一点。(我可以用 nils 逐渐填充它e.rewind
几次e.next
,如前所示。