Hi guys. If I tell you the selector is Dictionary >> #at:ifAbsentPut:  what
would you expect the second parameter to be?  the value.
So, one would do:
Dictionary new at: #foo ifAbsentPut: 4

But if you see Dictionary >>

at: key ifAbsentPut: aBlock
    "Return the value at the given key.
    If key is not included in the receiver store the result
    of evaluating aBlock as new value."

    ^ self at: key ifAbsent: [self at: key put: aBlock value]

so it expects a Block. Ok, we are in Smalltalk, so implementing #value is
enough.

Well..the previous example works, but only because we have an ugly Object >>
value  that returns self.
If I put instances of subclasses from ProtoObjects (proxies), that do not
work anymore.

So...my question is we do Dictionary at: #foo put: 4, why #at:ifAbsentPut:
expects a block and not directly the value?
in which case I need a block instead of the value object directly ?

thanks

-- 
Mariano
http://marianopeck.wordpress.com

Reply via email to