On Mon, Jul 16, 2018, at 03:17, Daurnimator wrote:
What doesn't nicely translate to lua is what to do in the `yield` case:
local function foo()
with bar do
coroutine.yield(baz) -- maybe baz contains something based on `bar`
end
end
local f = coroutine.wrap(foo)
f()
if xyz then -- only *maybe* does the coroutine get resumed
f()
end
I was unsure how that was dealt with in Python. This code:
class Foo(object):
def __init__(self):
pass
def __enter__(self):
print("enter")
return self
def __exit__(self, *args):
print("exit")
foo = Foo()
def my_gen_f():
while True:
with foo:
yield True
def f():
my_gen = my_gen_f()
next(my_gen)
print("after")
f()
print("finally")
prints:
enter
after
exit
finally
This is unrelated to the GC, disabling it does not change the output.