【问题标题】:Is there a Ruby equivalent to Perl's Data::Rmap?是否有与 Perl 的 Data::Rmap 等效的 Ruby?
【发布时间】:2010-09-29 22:09:36
【问题描述】:

Perl 的Data::Rmap 允许您在数据结构列表上递归地评估 BLOCK(本地设置 $_ 到每个元素)并返回由此类评估结果组成的列表。 $_ 可以用来修改元素。

这对于迭代嵌套散列或散列数组的层次结构等非常有用。

【问题讨论】:

标签: ruby perl recursion nested language-comparisons


【解决方案1】:

Ruby 的Enumerable 可以满足您的所有需求,我想。 “...并返回由此类评估结果组成的列表”表示您想要Enumerable#map。我的第一次尝试是这样的:

[ {...}, {...}, {...}, ... ].map do |hash|
  hash.something
  do_other_stuff_with(hash)
  hash                  # important to have as last line b/c of how #map works
end

【讨论】:

  • AFAICT,这是不等价的,因为 Data::Rmap 不仅仅适用于 ArrayOfHash (AoH)。它还可以迭代更复杂的结构,例如 ArrayofArray (AoA)、HashofArray (HoA) 和其他 (AoAoH)、(HoHoA) 等无限循环。
  • .map 将很高兴地处理除哈希以外的事物的数组。它不会做的是递归。也许一个 Y 组合器是有序的?
【解决方案2】:

如果不仔细研究细节,我不确定您是否需要 Ruby 中的模块。迭代器和块可以做你想做的事。

【讨论】:

  • 编辑以偶然发布示例或示例链接?
  • 检查 Gaius 的答案,它有更多细节:)
猜你喜欢
  • 1970-01-01
  • 2011-02-18
  • 2014-08-18
  • 1970-01-01
  • 2010-10-03
  • 2010-09-16
  • 1970-01-01
  • 1970-01-01
  • 2011-04-14
相关资源
最近更新 更多