An explicit "answer" from a block exits the method in which the
block is defined. This is often used for "easy answers" in a method:
someMethodFor: aValue
aValue < 3 ifTrue: [^7].
aValue > 10 ifTrue: [^aValue * 10].
^aValue complexExpressionHere.
As you discovered, if you don't answer from a block, the block's value is the
last expression evaluated.
You actually *can* return a value from the "middle" of a block, but at that
point, the code within the block is better factored out as a separate method.
In fact, nested blocks and complex blocks and desire to have complex control
inside a block are all signs that you aren't yet thinking in terms of small,
single-purpose methods.
--
Randal L. Schwartz - Stonehenge Consulting Services, Inc. - +1 503 777 0095
<
[hidden email]> <URL:
http://www.stonehenge.com/merlyn/>
Smalltalk/Perl/Unix consulting, Technical writing, Comedy, etc. etc.
See
http://methodsandmessages.vox.com/ for Smalltalk and Seaside discussion
_______________________________________________
Beginners mailing list
[hidden email]
http://lists.squeakfoundation.org/mailman/listinfo/beginners