|
From: | Koichi Murase |
Subject: | Re: feature request: new builtin `defer`, scope delayed eval |
Date: | Sat, 8 Oct 2022 17:11:29 +0900 |
Let me update the example implementation of ``defer''. I think this is more readable: function defer { local trap eval "trap=($(trap -p RETURN))" trap -- " if [[ \$FUNCNAME != defer ]]; then trap - RETURN $1 ${trap[2]-} fi" RETURN } declare -ft defer I also tested it with an example to demonstrate the behavior: function f1 { echo allocA defer 'echo freeA' echo allocB defer 'echo freeB' f2 f2 } function f2 { echo f2 echo allocC defer 'echo freeC' echo allocD defer 'echo freeD' } f1 ---------- result ---------- allocA allocB f2 allocC allocD freeD freeC f2 allocC allocD freeD freeC freeB freeA -- Koichi
[Prev in Thread] | Current Thread | [Next in Thread] |