groovy-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From MG <mg...@arscreat.com>
Subject Re: [Proposal] GString is implemented eager and treated as normal String since groovy 3.0.0
Date Mon, 10 Sep 2018 23:59:26 GMT
Hi Jochen,

could you be more precise about where you see the problem(s) in your 
example:

1) That Wrapper is not an immutable class, and you can therefore change 
its state after creation ?
2) That GString $-expressions (outside of "${-> ...}") do not capture 
the expression, but the result of evaluating the expression (which 
oftentimes will be an Object referece) ?
3) That GString is not immediately evaluated to its String representation ?
4) ... ?

And what you would accordingly want to see improved and how ?

Cheers,
mg


On 10.09.2018 20:33, Jochen Theodorou wrote:
> On 10.09.2018 18:51, Alessio Stalla wrote:
>> Yes, but a toString method with side effects is a really bad coding 
>> practice that won't be fixed simply by reducing the power of GString. 
>
> well...
>
>> class Wrapper {
>>   def x
>>   String toString(){x}
>> }
>>
>> def w = new Wrapper(x:1)
>> def gstring = "$w"
>> assert gstring == "1"
>> w.x = 2
>> assert gstring == "2"
>> w = new Wrapper(x:3)
>> assert gstring == "2" 
>
> I don't think that example really falls under your really bad coding. 
> You have this problem with lists and maps all the time
>
> bye Jochen
>


Mime
View raw message