Angeben einer Perl 6-Klasse in einer Variablen

8

Ich habe eine Reihe von Perl 6-Tests, die mit einigen grundlegenden Tests beginnen, bei denen ich den Klassennamen in eine Variable einstelle, die diese Variable während des Tests verwendet:

%Vor%

Ich habe das ein wenig nicht beachtet, aber es funktioniert nicht mehr, weil Klassen sind lexikalisch geladen jetzt :

  

Kein solches Symbol 'Some :: Class'

Es ist keine feste Sache. Laden Sie das Modul ohne use-ok und in den Bereich, wo ich ::($package) :

möchte %Vor%

Bei den anderen Lösungen (die ein hässliches EVAL abziehen) habe ich das Problem, das ich vermeiden möchte.

Aber ich mag das nicht besonders, weil der Name zweimal in der Datei auftaucht. Besonders gefallen hat mir meine frühere Arbeitsweise, die ich von Perl 5 übernommen habe. Wenn ich einen Klassennamen ändern wollte, tauchte er nur einmal in der Datei auf. Ich könnte leicht Vorab-Tests generieren (obwohl es nicht so viel schwieriger für die Lösung ist).

Gibt es eine Möglichkeit, zu dem Ideal zurückzukehren, das ich wollte? (Obwohl ich lexikalische Belastung in der nächsten Version wird wieder in die Quere kommen).

    
brian d foy 02.04.2017, 02:22
quelle

1 Antwort

7

Um das Problem zusammenzufassen: Sie möchten Module mit einem Symbol laden, statt es hart zu codieren. Die Verwendung einer Konstante sollte dies für Sie tun:

%Vor%

Sie können das Modul auch zur Laufzeit mit require laden, was berechnete Laufzeitwerte ermöglichen würde:

%Vor%

Es wäre sinnvoll, dies nach dem Versuch eines use-ok zu tun.

Für zusätzliche Anerkennung können Sie die Techniken in diesem Artikel nützlich finden. Ссылка

    
Jarrod Funnell 02.04.2017, 22:48
quelle

Tags und Links