主要观点:Ruby 集合通常只能为Enumerable模块定义一个#each,但二叉树等有多种有效遍历方式的集合存在问题。
关键信息:
- 二叉树有前序、中序、后序等多种遍历方式,可作为对象的方法实现。
Enumerable要求集合类有#each方法,若将遍历方法别名#each,则只能按该遍历方式使用枚举方法。- 可使用
Enumerator类返回枚举器,从遍历方法中返回,使调用者可选择遍历方式,如tree.inorder.find等。 - 推荐在 Ruby 中创建可迭代集合时,若集合有多种有效遍历,返回
Enumerator而不是包含Enumerable。
重要细节: - 展示了二叉树不同遍历方式的代码实现,如
preorder等方法。 - 提到
Object#to_enum方法可将遍历方法构建为枚举器。 - 推荐观看Teaching Ruby to Count视频深入了解相关内容。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用。你还可以使用@来通知其他用户。