On 17.08.2011 22:57, Henrik Sperre Johansen wrote:
> On 17.08.2011 22:29, Philippe Marschall wrote:
>> On 17.08.2011 22:17, Stéphane Ducasse wrote:
>>> I wrote
>>>
>>>
>>> cull: anArg
>>>     "Execute the receiver with one or zero argument.
>>>     
>>>     [ 1 + 2 ] cull: 5
>>>         returns 3
>>>     [ :x | 1+ 2 + x] cull: 5
>>>         returns 8
>>>     "
>>>     ^numArgs = 0
>>>         ifTrue: [self value]
>>>         ifFalse: [self value: anArg]
>>>     
>>
>> So it's like #valueWithPossibleArgument:?
> Almost.
> cull: raises error if given blocks with too many args,
> valueWithPossibleArgument(s): evaluates with the extra args as nil.
>>   Why do we need two methods
>> that do the same thing?
> Because valueWithPossibleArguments was there first, and we can't simply
> remove it.
> cull is more natural to use in 99.9% of the cases.
> 
> Also, #cull: protocol only goes up to 4 arguments, mirroring #value:
> (#cullWithArguments: not being present is mostly an oversight though... )

So we #valueWithPossibleArgument:?

Cheers
Philippe


Reply via email to