Was macht dieses Groovy Konstrukt und wie funktioniert die Syntax?

8

Ich habe bei Groovy einige datengetriebene Tests gemacht. Wenn es darauf ankommt, ist dies in einem Spock-Test.

Hier ist der Weg, denke ich, dass Listen funktionieren sollen:

%Vor%

erzeugt:

%Vor%

Ich habe versehentlich so etwas gemacht:

%Vor%

welche Ausgaben:

%Vor%

OK, ich kann sehen, dass Groovy die Deklaration ohne die Kommas nicht mochte - aber es kompiliert, also was ist das?

Hier ist, was mich wirklich über diese Syntax wirft:

%Vor%

ergibt Folgendes:

%Vor%

Ich bin hier völlig verloren - was ist das Groovy-Konstrukt, das ich erstelle, und warum gibt es diese scheinbar zufälligen Werte aus meinen Listen aus?

Danke, und wenn Sie an einen aussagekräftigeren Namen für meine Frage denken, werde ich das ändern.

    
orbfish 08.04.2015, 17:44
quelle

2 Antworten

9

Also

%Vor%

Erzeugt eine Liste [1,2,3] , greift auf die Elemente 4, 5 und 6 zu (die nicht existieren), um Ihnen eine Liste von drei Nullen zu geben, und greift dann auf Elemente 7,8 und 9 dieser Nullliste zu (wiederum drei) Nullen werden zurückgegeben)

Anschließend wird die Liste der drei Nullen in einer Liste umbrochen

Mit diesem Beispiel:

%Vor%

Drillt runter zu:

%Vor%

Gibt die erste, 0., 0., 0., 1., 1. und 1. und endet mit

%Vor%

und so weiter.

    
tim_yates 08.04.2015, 18:01
quelle
6

Zerlegen Sie dies in ein kleineres Beispiel (in groovysh):

%Vor%

Aber wir brauchen das extra Array nicht, also können wir das auspacken:

%Vor%

Das ist eigentlich eine Art Indexierung der Liste, die normalerweise so aussieht:

%Vor%

Aber wenn wir das Ende des Arrays indizieren:

%Vor%

Es stellt sich heraus, dass groovy das Slicing als Teil dieser Syntax unterstützt (siehe Ссылка ) für mehr Beispiele), so können wir tun:

%Vor%

Um das dritte Element gefolgt vom ersten Element zu erhalten.

Aber die Kombination dieser beiden Fakten:

%Vor%

Wir indexieren erneut über das Ende des Arrays hinaus, aber mit einer Scheibe, die uns zwei Nullen gibt.

    
ComputerDruid 08.04.2015 18:01
quelle

Tags und Links