Or change the last two lines a little more:

println("XX${o2}YY${o2(42)}ZZ$o2")  // *42\n*XX\n*XXYY1ZZ\nXXYY1ZZ
assert triggered == 4

It looks weird to me but perhaps there was a reason to it?


On Fri, Dec 22, 2017 at 9:20 AM, Paul King <pa...@asert.com.au> wrote:

> I suspect this is intentional but was before my time. Try this also:
>
> int triggered = 0
> def o1 = { -> triggered++ }
> def o2 = { println '*' + it; triggered++ }
>
> println(o1) // ConsoleScript11$_run_closure1@xxxxxxxx
> println(o2) // ConsoleScript11$_run_closure2@yyyyyyyy
>
> assert triggered == 0
> println("xyzzy$o1") // xyzzy0
> assert triggered == 1
> println("XX${o2}YY${o2(42)}ZZ") // *42\n*XX\nXXYY1ZZ
> assert triggered == 3
>
>
> On Fri, Dec 22, 2017 at 8:20 AM, Nathan Harvey <nathanwhar...@gmail.com>
> wrote:
>
>> Take the following code:
>>
>> int triggered = 0
>> def o = { -> triggered++ }
>>
>> println(o) // A
>> println("$o") // B
>> println("${o}") // C
>>
>> After A, triggered is 0; after B, it's 1; after C, it's 2. The Closure is
>> being called and the result of it is being printed instead. Is this
>> behavior
>> intended?
>>
>>
>>
>> --
>> Sent from: http://groovy.329449.n5.nabble.com/Groovy-Dev-f372993.html
>>
>
>

Reply via email to