【发布时间】:2019-08-02 07:17:34
【问题描述】:
我在 Ruby 中遇到了一个我无法解释的奇怪行为。
如果我们有一个数组数组并想用map 对其进行迭代。我尝试将 map 与两个块变量一起使用,期望第二个是索引,但它取而代之的是内部数组的值。为什么?
persons = [["john", 28], ["mary", 25],["emma", 30]]
persons.map do |param1, param2|
puts param1
puts param2
end
输出是
john
28
那么它为什么会使用它应该迭代的迭代器的值呢?
【问题讨论】:
-
它就是这样工作的。它产生元素并分配对应于数组中每个元素的两个局部变量。如果您需要使用元素索引,请考虑使用
with_index。 -
a,b =["john", 28]。现在 b == 28 -
参考@steenslag 的评论,解释为here。
-
您能否指出您发现
map产生两个值的文档,其中第二个是索引?那是完全错误的,知道你在哪里找到这样的文档会很有趣,这样我们就可以警告未来的程序员它的不准确之处和/或联系负责人并要求他们更正。 -
@Jörg 我没有看到这样的文档,我想我只是假设它是因为 each_with_index 有第二个作为索引。我新的解构任务,但只是忘记了它。这是完全有道理的,但是我认为第二个参数应该是索引
标签: ruby