[Newbies] Polymorphic or: with block argument
marcel.taeumel at hpi.de
Sun Sep 10 12:50:08 UTC 2017
I think the issue is that you cannot implement the message #or: for any domain object because the compiler treats it in a special way.
Consider a class Foo with the method #or:
Foo >> #or: block
^ block value
You cannot use it as expected:
x := Foo new.
y := x or: .
There is an optimisation that interferes with the general concepts of objects and messaging.
Am 10.09.2017 14:45:31 schrieb David T. Lewis <lewis at mail.msen.com>:
On Sun, Sep 10, 2017 at 01:33:15PM +0200, Lorenz K??hl wrote:
> I don't understand why Smalltalk doesn't allow me to have an or:
> method that takes a block argument (except on Boolean). For example:
> Set or: 1. ==> MNU as expected.
> Set or: . ==> NonBooleanReceiver exception.
> Set or: [:x | x] ==> Argument has too many arguments
> Is it because the compiler specializes this to boolean when it sees
> the or: [ ... ] syntax? Is this a tradeoff made for performance?
If you are looking for set operations, check these methods:
I am not sure what you are trying to do with your examples. Can you
explain the intent?
Beginners mailing list
Beginners at lists.squeakfoundation.org
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the Beginners