Paul,

> On 9. 11. 2016, at 2:43 AM, Paul King <pa...@asert.com.au> wrote:
> Everything you say is true but withThis() has some subtle issues.
> It would be a fine name for the current with() method, so it's hard to
> distinguish between the two.

That's why I have suggested to part with the original one (but for backward 
compatibility) and take two new methods,

foo.doWith { ... } // which returns foo, which seems sorta logical
foo.resultWith { ... } // which returns the result of the closure and is worlds 
more intuitive that the original one

or am I overlooking something of importance?

All the best,
OC

> Using self.with(closure) sets self to be the delegate of the closure
> which effectively means it becomes the "implicit this" object.
> So conceptually a shorthand for self.withSelfAsTheImplicitThisObject(closure).
> The new method needs to be a shorthand for
> self.withSelfAsTheImplicitThisObjectThenReturningSelf(closure).
> So when picking the shorthand, we should derive something about the
> dirrerence between these two names in the shortcut and "This" is one
> of the similarities.
> I'd prefer "withThen".
> 
> Also, the link with tap and Ruby isn't about trying to be like Ruby
> but about not introducing yet another name for something that is in
> use elsewhere *unless* we have a good reason.
> 
> Cheers, Paul.
> 
> On Wed, Nov 9, 2016 at 10:53 AM, Philip Mitchell
> <pjmitch...@blueyonder.co.uk> wrote:
>> +1 for withThis()
>> -1 tap()
>> 
>> I agree with the point below. Given this is virtually identical to the 
>> existing with() method, the new methods name should reflect that. 
>> Consistency within Groovy and it’s existing libraries counts for more than 
>> consistency with what the method is called in another language.
>> 
>> I see comments below that tap() makes more sense once explained, but I would 
>> argue that the fact it needs explained is enough of a reason to reject it. I 
>> lean toward method names that clearly express what they do. tap() seem 
>> cryptic. The name withThis() has the virtue of being reasonably descriptive 
>> as well as being consistent with the existing with() method name.
>> 
>> Just my 2-cents worth.
>> 
>> Phil Mitchell

Reply via email to