懒惰地用IO.popen调用yes

时间:2015-01-06 11:13:07

标签: ruby lazy-evaluation

我有以下方法:

def yessir
  IO.popen('yes').each do |y|
    y
  end
end

puts yessir.first

它调用yes,这是一个将y写入控制台永恒的程序。如果运行此代码,它永远不会返回,这意味着yessir - 方法不是懒惰的。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

def yessir
  IO.popen('yes').lazy.each do |y|
    y
  end
end

puts yessir.first