ちょっと変な質問なので、説明します。
IRCサーバーへのジェネレーターフロントエンドとして機能する、次のようなジェネレーターがあります。
def irc_iter(): # not the real code, simplified
msgs = get_msgs()
for msg in msgs:
if is_ping(msg):
pong()
else:
to_send = yield msg
for s in to_send:
send(s)
これにより、理論的には、次のようなクールなことができるはずです。
server = connect()
for line in server:
if should_respond(line):
server.send('WOW SUCH MESSAGE')
ただし、ヒッチがあります。generator.send
次の値も生成されます。これはserver.send
、次のメッセージも提供していることを意味します...これは、他のすべてのメッセージと同様に処理したいと思いますline
。
送信を受信した後にジャンク値を生成するだけで、これを醜い方法で修正できることはわかっていますが、コードをエレガントに保とうとしていますが、それは逆です。まだ新しい値が必要ないことをジェネレーターに伝える方法はありますか?
ありがとう。