But do they expect GString to be immutable, or do they expect a GString literal 
to return a String instance (ie for toString() being called implicitely on it) ?
I would expect the latter. At least I was not aware that the Groovy "GString 
concept" is actually based on a GString class when I started out with Groovy - 
using def everywhere together with the fact that Groovy toString|s GString|s 
when a String is expected do a great job of obfuscating that.
The question is, where does that lead us... ?
-------- Ursprüngliche Nachricht --------Von: Jochen Theodorou 
<blackd...@gmx.org> Datum: 11.09.18  11:20  (GMT+01:00) An: MG 
<mg...@arscreat.com>, dev@groovy.apache.org Betreff: Re: [Proposal] GString is 
implemented eager and treated as normal
  String since groovy 3.0.0 


Am 11.09.2018 um 01:59 schrieb MG:
> 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) ... ?

The problem is user expectations. Many do not expect GString to be 
mutable, since they do not use it as a templating solution or something 
compareable. I think we should offer something here. That does not have 
to be GString in syntax at all.

Or we align more with Javascript tempalating and make GString immutable.

bye Jochen

Reply via email to