Or #ifNotNil: class metaclass ifNotNil: [ :metaclass | metaclass xxx. metaclass yyy ].
With the added benefit to not do anything with nil. Christian > -----Ursprüngliche Nachricht----- > Von: Pharo-users <pharo-users-boun...@lists.pharo.org> Im Auftrag von > Sven Van Caekenberghe > Gesendet: Montag, 4. März 2019 14:35 > An: Any question about pharo is welcome <pharo-users@lists.pharo.org> > Betreff: Re: [Pharo-users] A "with" construct like Pascal - easy to do, but > is it > terrible? > > There is #in: that does exactly that: > > class metaclass in: [ :metaclass | > metaclass xxx. > metaclass yyy ]. > > This is quite similar to lisp's let. > > You can do almost anything with blocks/closures. > > Although not relevant in most cases, there is a small performance price to > pay - but again this is only relevant inside performance critical loops. > > > On 4 Mar 2019, at 14:06, Tim Mackinnon <tim@testit.works> wrote: > > > > I’ve noticed that as we’ve progressed there has been a move to more > concise and fluid code - e.g. I quite like the new String streaming stuff > > > > e.g. > > > > ^ String > > streamContents: [ :stream | > > stream nextPut: …. ] > > > > > > So I was wondering why we don’t have a construct like Pascals with to > avoid Book1.title, Book1.author etc. > > > > (* book 1 specification *) > > With Book1 do > > begin > > > > title > > := 'C Programming'; > > > > author > > := 'Nuha Ali '; > > > > subject > > := 'C Programming Tutorial'; > > > > book_id > > := 6495407; > > end; > > > > I often find it a bit tedious with code like the following which then needs > > an > instvar... > > > > self classes do: [ :class | > > | metaclass | > > metaclass := class metaclass. > > metaclass xxxx. > > mataclass yyyy. > > ] > > > > > > I’m wondering why we don’t have #with:do: > > > > class with: class metaclass do: [:metaclass | > > metaclass xxx. > > ] > > > > > > But when such things aren’t there - there is usually a good reason and I’m > curious … this said, there are all kinds of other such tricks (which I rarely > use > that I keep coming across). > > > > Tim > > >