On Fri, 17 May 2019 at 01:21, Brainstorms <wild.id...@gmail.com> wrote:
> I beg your pardon.. and thank you for being the first to draw my attention > to > the fact that the phrase (a common enough American colloquialism) is > actually a logical fallacy. Until now, it's been strictly idiomatic to me. > > And thank you for your prompt reply. > > Am I safe to assume that blocks in Smalltalk, as with Lua, capture their > locally-scoped variables (referred to in Lua as "non-local variables") for > correct evaluation in other contexts, such as when blocks are passed as > arguments and return values? I.e., cases where the local variables of a > method have gone out of scope and no longer exist, yet are referenced > within > the block at some future time when evaluated. I expect so; I just haven't > seen it described in this detail. > You mean like this... In System Browser... Object subclass: #A instanceVariableNames: '' classVariableNames: '' package: 'AA' A >> block |a| ^ [ a := (a ifNil: [ 0 ]) + 1 ] In Playground... b := A new block inspect. { b value. b value. b value . b } "==> an Array( 1 2 3 [ a := (a ifNil: [ 0 ]) + 1 ] )" cheers -ben