Python では、yield キーワードはプッシュ コンテキストとプル コンテキストの両方で使用できます。C# でプル コンテキストを実行する方法は知っていますが、プッシュを実現するにはどうすればよいでしょうか。Python から C# で複製しようとしているコードを投稿します。
def coroutine(func):
def start(*args,**kwargs):
cr = func(*args,**kwargs)
cr.next()
return cr
return start
@coroutine
def grep(pattern):
print "Looking for %s" % pattern
try:
while True:
line = (yield)
if pattern in line:
print line,
except GeneratorExit:
print "Going away. Goodbye"