You'd need to interleave the values from the GString.
On Tue, Sep 26, 2023 at 12:43 AM Jochen Wiedmann <jochen.wiedm...@gmail.com> wrote: > > Hi, > > can anyone advise me, what is wrong with the following code: I'd > expect it to write out the word "Okay". Instead, it throws the > exception "Unexpected result: Hello, !" > > final String scriptStr = "return \"Hello, $name!\";"; > final GroovyShell gs = new GroovyShell(); > final Script script = gs.parse(new StringReader(scriptStr)); > > final Binding binding = new Binding(); > binding.setProperty("name", "world"); > script.setBinding(binding); > > final GStringImpl gsi = (GStringImpl) script.run(); > final String[] gsArray = gsi.getStrings(); > final String result; > > if (gsArray == null || gsArray.length == 0) { > result = null; > } else { > result = String.join("", gsArray); > } > > if (!"Hello, world!".equals(result)) { > throw new IllegalStateException("Unexpected result: " + result); > } > System.out.println("Okay."); > > > > -- > The woman was born in a full-blown thunderstorm. She probably told it > to be quiet. It probably did. (Robert Jordan, Winter's heart)