I vote for withThis for similar reasons as Keith
> On Nov 8, 2016, at 10:57 AM, Suderman Keith <[email protected]> wrote:
>
> +1 for withThis
>
> withThis{} indicates it is just another form of the .with{} method that
> returns this, that seems the most logical and consistent name. The name
> `tap` strikes me as non-sensical; what does doing something "with" an object
> have to do with tapping a beer keg or wire tapping a phone line?
>
> My two cents.
> Keith
>
>> On Nov 8, 2016, at 10:20 AM, Winnebeck, Jason
>> <[email protected]> wrote:
>>
>> Normally, I'd say that we should use Java as first inspiration and all other
>> popular JVM languages (including Kotlin) as second inspiration, because it's
>> really nice as a JVM-ecosystem developer to have a common set of terminology
>> and methods. However, I agree with Paul's analysis. The meaning of "apply"
>> conflicts with Java's Function.apply as well as apply from JavaScript world
>> (I don't know if others agree but I think of Groovy in a similar mindset to
>> JS). The closest Java signature is Function.identity, but identity is
>> already used in Groovy and most think of identity function as "doing
>> nothing".
>>
>> Therefore, my vote is for tap. When I see tap it makes sense to me. It makes
>> me think of the Unix "tee" shell command that does the same thing by sending
>> the object to another command and returning the same output unmodified. The
>> usage of tap here is also consistent with network terminology (a network
>> tap), and real-world usage (such as "tapping" a water pipe). A tap observes
>> the input without changing it and allowing it to pass unimpeded, unlike a
>> filter or a function.
>>
>> Jason
>>
>> -----Original Message-----
>> From: Paul King [mailto:[email protected]]
>> Sent: Tuesday, November 08, 2016 9:34 AM
>> To: [email protected]
>> Subject: .with() variant that returns the original object
>>
>> Hi everyone,
>>
>> We are hoping to release 2.5 not too far down the track. We are working on a
>> revamped release process that is going to dramatically improve our ability
>> to release early/release often but also comply with some additional Apache
>> requirements that we follow these days.
>> But more on that another time.
>>
>> One outstanding feature request targeted for potential inclusion in
>> 2.5 is an alternative to .with{} that automatically returns the original
>> object after executing the closure - recall that .with{} returns the last
>> evaluated expression. The proposal is here:
>>
>> https://github.com/apache/groovy/pull/174/files
>>
>> We can't use the old name since that would break backward compatibility and
>> is of utility in its current form in any case, so we are looking for a new
>> name for the proposed method. If you look at the PR you will see it has been
>> called 'tap' and 'doto' and numerous other names have been suggested. We
>> regard naming as very important and normally we'd have very strong views
>> about suitable names based on functionality and similar method names within
>> the Groovy codebase. But in this instance, an obvious name hasn't popped out
>> at us, so we are requesting feedback from the community about what names
>> make most sense to you.
>>
>> Firstly, here is what the method does. I'll use 'tap' in these examples
>> since that is what the PR currently uses but we can easily change that based
>> on feedback.
>>
>> myObject.tap {
>> // some code
>> }
>>
>> is equivalent to:
>>
>> myObject.with {
>> // some code
>> return this
>> }
>>
>> Returning the 'self' object lends itself to various kinds of chaining, e.g.
>>
>> assert [:].tap {
>> a = 1
>> }.tap {
>> b = 2
>> } == [a:1, b:2]
>>
>> Or this one (adapted from a blog post[1] - and assuming you have a
>> config.properties file containing answer=42 as one of the properties):
>>
>> assert new Properties().tap {
>> new FileInputStream('config.properties').withCloseable {
>> load(it)
>> }
>> }.answer == '42'
>>
>> Here are some of the names that have been suggested with some commentary:
>>
>> doto Used by Clojure. Not camel case as per normal convention
>> (though we have upto and downto which also break that convention) and it
>> isn't immediately obvious which is which between with and doto just from the
>> names
>>
>> tap Comes from Ruby and a previous Groovy extension outside core
>> exists; meant to conjure up the idea of tapping into an object
>>
>> autoWith Same as with but automatically returns self
>>
>> doWith Again, hard to distinguish between doWith and with from the
>> names themselves
>>
>> tee An alternative name for tap
>>
>> auto A shortened version of 'autoWith'
>>
>> apply same as Kotlin which has copied Groovy's with but suffers
>> from the downside that apply is already heavily overleaded in other
>> contexts, e.g. functional programming
>>
>> withThis Distinction with normal with a bit subtle perhaps
>>
>> asThis Ditto
>>
>> within Ditto
>>
>> I'll also point out the 'identity' is currently an alias for 'with', in case
>> that provides any additional inspiration.
>>
>> Perhaps you dis/like one of the above or have some other suggestions.
>> Let us know.
>>
>>
>> Cheers, Paul.
>>
>>
>> [1] http://beust.com/weblog/2015/10/30/exploring-the-kotlin-standard-library/
>>
>> This email message and any attachments are for the sole use of the intended
>> recipient(s). Any unauthorized review, use, disclosure or distribution is
>> prohibited. If you are not the intended recipient, please contact the sender
>> by reply email and destroy all copies of the original message and any
>> attachments.
>