groovy-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Jochen Theodorou <blackd...@gmx.org>
Subject Re: Extension method upgrades
Date Fri, 15 Dec 2017 12:28:36 GMT


Am 15.12.2017 um 10:06 schrieb C├ędric Champeau:
> 
> 
> 2017-12-15 8:02 GMT+01:00 Jochen Theodorou <blackdrag@gmx.org 
> <mailto:blackdrag@gmx.org>>:
> 
>     On 15.12.2017 06:10, Nathan Harvey wrote:
> 
>         I think your first step - "define a file that contains extension
>         functions" -
>         is slightly wrong. In Kotlin, you can place extension methods
>         anywhere, they
>         do not have to be confined to a single file (or worse, like
>         Groovy, in a
>         totally different dependency). The syntax I discussed is what
>         enables them
>         to do this.
> 
> 
>     I am aware of that you can define them anywhere. But frankly, I find
>     that pretty messy. I mean defining quasi global extension methods
>     randomly all over the place... does sound like maintenance hell to
>     me. Probably best to declare them inline as well, then you will
>     never ever be able to find them again, if they are from a library.
> 
> 
> I disagree here. The fact that you can define extension methods locally 
> in Kotlin is a huge win, especially for DSLs. Unlike Groovy they are 
> local, so don't leak to other parts of the application. 

The key point here is that they are local. In this case I of course will 
not say that they are messy at all - the local ones. The global ones I 
consider still messy, because you can still declare them all over the 
place.

But local extensions then they are more like our concept of static 
categories, that is on the list for like... I don't know... surely 5+ 
years. Now... how does Kotlin know if something is local and something 
is not? I guess 
https://kotlinlang.org/docs/reference/extensions.html#declaring-extensions-as-members 
explains that actually.

Then what are we talking then about now in this thread? Global 
extensions, local extensions, how to improve Groovy extension methods to 
not require extra steps for the static compiler or even static categories?

bye Jochen

Mime
View raw message