[Newbies] Re: Re: error trap
Roel Wuyts
Roel.Wuyts at ulb.ac.be
Thu Aug 10 15:27:09 UTC 2006
Note: no need for the endEntry when using show: it does it already
(see TranscriptStream>>#show: )
Use a 'manual' endEntry when you would use nextPutAll: or print: etc.
on the Transcript (which most people do not use anyway).
On 10 Aug 2006, at 17:02, Ron Teitelbaum wrote:
>
>> From: Klaus D. Witzel
>>
>> On Wed, 09 Aug 2006 21:11:40 +0200, Ron Teitelbaum wrote:
>>> Brian,
>>>
>>> Yes I agree it's a great suggestion, although a few changes:
>>> Literal blocks to not parse into collections automatically.
>>
>> Ron, please: a literal Array is a subclass of Collection and so
>> the blocks
>> in
>>
>> { [nil]. [true]. [false] }
>
> Learn something every day!
>
>>
>> parse "into collections automatically". You didn't inspectIt for
>> verifying
>> your (false) claim, didn't you.
>
> No I didn't! The { } just looked so wrong and like C! I'm used to
> #()
> which of course doesn't work.
>
> Also, have a look at the implementors of
>> #caseOf: and #caseOf:otherwise:, they are heavy users of literal
>> blocks in
>> Collections ...
>
> I will!
>
>>
>> ...
>>> Each in this case is already a block.
>>
>> Yes. And, into the other direction, even in good core methods one
>> often
>> finds things like
>>
>> ^ dict at: aKey ifAbsent: [nil]
>
> I started to write this too but thought about some of the errors
> that people
> receive about wrong form of block and didn't want to scare people.
>
>>
>> There seems to be a "natural" confusion between "object" value and
>> block
>> "value". Not a big surprise since Java and other procedural-oriented
>> friends do not offer block values. So any demo of using blocks "as
>> if"
>> they where any other object, as Brian has shown, is a sign for the
>> ability
>> to master the subject 8-)
>>
>>> Only each is needed.
>>
>> Absolutely.
>>
>>> So here is a version that works.
>>>
>>> (OrderedCollection new
>>> add: [10/0];
>>> add: [2 raisedToInteger: 1/2];
>>> add: [-5 raisedTo: 1.5]; yourself
>>> ) do: [:each | each on: Exception do: [:ex | Transcript show: ex;
>>> cr;
>>> endEntry]].
>>>
>>> endEntry is for Klaus!
>>
>> Hhm, endEntry is too expensive within any and every loop. Just put
>> Transcript endEntry after the loop. I mentioned endEntry because
>> Transcript almost always does not display the last lines (they are
>> buffered) and people get confused and believe that either their
>> code or
>> Squeak is wrong (but both is not the case).
>>
>>> It is a very good suggestion Brian!
>>
>> Indeed, and Briant's use of literal blocks in a literal Array is
>> perfect
>> (in the sense of: cannot be made better).
>>
>
> Thanks for your correction Klaus! With programming always keep an
> open
> mind, there is lots more to learn!
>
> Ron
>
>
>
> _______________________________________________
> Beginners mailing list
> Beginners at lists.squeakfoundation.org
> http://lists.squeakfoundation.org/mailman/listinfo/beginners
>
More information about the Beginners
mailing list