【发布时间】:2020-05-17 17:49:44
【问题描述】:
我的班级有一个File,我想实现each_line,其功能与File#each_line 相同,因此可以使用块或不使用块来调用它。在没有块的情况下调用时,会返回一个Enumerator。
这是我目前的代码:
def each_line(&block)
if block_given?
read_loop(&block)
else
Enumerator.new do |y|
read_loop(&y)
end
end
end
private
def read_loop(&block)
while line = readline
block.yield line
end
end
我想知道是否有一种更简洁的惯用方式来实现 each_line,而不是询问是否传递了一个块并做非常相同的事情,只是在每种情况下略有不同。
readline 是类中的公共方法(它的作用与File#readline 的作用更多。
【问题讨论】:
标签: ruby enumerator