【发布时间】:2017-10-28 01:57:08
【问题描述】:
以下 python 协程 sn-p 的 Kotlin 惯用替代方案是什么:
def generator():
c = 1
while True:
op = yield c
if op == 'inc':
c += 1
elif op == 'mult':
c *= 2
# main
g = generator()
a = g.send(None) # start
b = g.send('inc')
c = g.send('mult')
d = g.send('inc')
print([a, b, c, d]) # 1, 2, 4, 5
所以我需要从协程中获取值(通过通道?),但还要将值发送回协程。我需要两个频道吗?
【问题讨论】:
-
您尝试过哪些解决方案?您应该指出这是一种尝试过的解决方案,该解决方案有效或无效。否则,您是在说“请为我编写代码”而不是“此代码不应该工作”
-
您将 op 设置为 c 即 1,因此它永远不会满足您的递增或乘法条件。
标签: python concurrency kotlin channel coroutine