Ability to defer functions, closes #403 #431
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Sometimes it is very helpful to guarantee a certain function is executed
regardless of what code path we take: you can use the
defer
keyword forthis.
When you schedule a function to be deferred, it will executed right at
the end of the current scope. A
defer
inside a function will thenexecute at the end of that function itself:
You can
defer
any callable: a function call, a method or even a systemcommand. This can be very helpful if you need to run a cleanup function
right before wrapping up with your code:
In this case, you will be guaranteed to execute the command that removes
my-file.txt
before the program closes.Be aware that code that is deferred does not have access to the return value
of its scope, and will supress errors -- if a
defer
block messes up you'renot going to see any error. This behavior is experimental, but we would most
likely like to give this kind of control through try...catch...finally.