Ruby中如何将多个可枚举对象合并成一个?
- 内容介绍
- 文章标签
- 相关推荐
本文共计493个文字,预计阅读时间需要2分钟。
没有具体的伪代码内容,无法进行直接改写。但以下是一个简化的改写示例,假设您的问题是关于如何将多个`Enumerable`对象显示为单个`Enumerable`而不是数组:
ruby假设这是您想要改写的代码class Enumerables include Enumerable
def initialize # 初始化代码 end
# 假设这是您需要改写的方法 def each # 原始的each方法,可能将多个Enumerable对象展开为一个数组 # 这里需要改写,使其不将对象展开为数组 endend
改写后的内容可能如下:
ruby改写后的代码class Enumerables include Enumerable
def initialize # 初始化代码 end
def each # 直接遍历对象,而不是将它们转换为数组 # 假设self.items是一个包含多个Enumerable对象的数组 self.items.each do |item| yield item if block_given? end endend
这里,`each`方法直接遍历`self.items`中的每个对象,而不是将其展开为数组。这样就避免了将多个`Enumerable`对象转换为一个数组。注意,这个例子假设`self.items`已经是一个包含多个`Enumerable`对象的数组。您需要根据实际情况调整代码。
有没有办法让几个Enumerable对象显示为单个Enumerable而不将其展平为一个数组?目前我写了一个类似的课程,但我觉得必须有一个内置的解决方案.class Enumerables include Enumerable def initialize @enums = [] end def <<(enum) @enums << enum end def each(&block) if block_given? @enums.each { |enum| puts "Enumerating #{enum}" enum.each(&block) } else to_enum(:each) end end end enums = Enumerables.new enums << 1.upto(3) enums << 5.upto(8) enums.each { |s| puts s }
举个简单的例子,它需要能够像这样接受一个无限的枚举器.
inf = Enumerator.new { |y| a = 1; loop { y << a; a +=1 } };
毕竟.在元素上使用带有.each.lazy的
Enumerable::Lazy#flat_map:
inf = Enumerator.new { |y| a = 1; loop { y << a; a += 1 } } [(1..3).to_a, inf].lazy.flat_map { |e| e.each.lazy }.take(10).force #⇒ [1, 2, 3, 1, 2, 3, 4, 5, 6, 7]
本文共计493个文字,预计阅读时间需要2分钟。
没有具体的伪代码内容,无法进行直接改写。但以下是一个简化的改写示例,假设您的问题是关于如何将多个`Enumerable`对象显示为单个`Enumerable`而不是数组:
ruby假设这是您想要改写的代码class Enumerables include Enumerable
def initialize # 初始化代码 end
# 假设这是您需要改写的方法 def each # 原始的each方法,可能将多个Enumerable对象展开为一个数组 # 这里需要改写,使其不将对象展开为数组 endend
改写后的内容可能如下:
ruby改写后的代码class Enumerables include Enumerable
def initialize # 初始化代码 end
def each # 直接遍历对象,而不是将它们转换为数组 # 假设self.items是一个包含多个Enumerable对象的数组 self.items.each do |item| yield item if block_given? end endend
这里,`each`方法直接遍历`self.items`中的每个对象,而不是将其展开为数组。这样就避免了将多个`Enumerable`对象转换为一个数组。注意,这个例子假设`self.items`已经是一个包含多个`Enumerable`对象的数组。您需要根据实际情况调整代码。
有没有办法让几个Enumerable对象显示为单个Enumerable而不将其展平为一个数组?目前我写了一个类似的课程,但我觉得必须有一个内置的解决方案.class Enumerables include Enumerable def initialize @enums = [] end def <<(enum) @enums << enum end def each(&block) if block_given? @enums.each { |enum| puts "Enumerating #{enum}" enum.each(&block) } else to_enum(:each) end end end enums = Enumerables.new enums << 1.upto(3) enums << 5.upto(8) enums.each { |s| puts s }
举个简单的例子,它需要能够像这样接受一个无限的枚举器.
inf = Enumerator.new { |y| a = 1; loop { y << a; a +=1 } };
毕竟.在元素上使用带有.each.lazy的
Enumerable::Lazy#flat_map:
inf = Enumerator.new { |y| a = 1; loop { y << a; a += 1 } } [(1..3).to_a, inf].lazy.flat_map { |e| e.each.lazy }.take(10).force #⇒ [1, 2, 3, 1, 2, 3, 4, 5, 6, 7]

