Angenommen, ich habe die folgende Datei my-mod.rkt
.Kann ich ein Modul mehrmals in einem Racket-Programm instanziieren?
#lang racket ;; my-mod.rkt
(displayln "Module ran")
Ich kann natürlich diese Datei ausführen, indem Sie das Modul in den ers oder einem anderen Skript Instanziierung:
(require "my-mod.rkt")
Welche Module ran
ausdruckt.
Allerdings, wenn ich das Modul nicht zweimal auf diese Weise ausführen kann. Wenn zum Beispiel benötige ich my-mod.rkt
zweimal:
(require "my-mod.rkt")
(require "my-mod.rkt")
Das Modul nur einmal instanziiert wird. Was ist normalerweise das, was Sie für die Zwecke benötigen, aber in diesem Fall eine Instanziierung des Moduls hat eine Nebenwirkung, die ich gerne erhalten würde.
Offensichtlich konnte ich find-exe
verwenden, um dies in einem anderen Teilprozess auszuführen:
(require compiler/find-exe)
(system* (find-exe) "my-mod.rkt")
aber dann dieses Programm Ich renne in einem anderen OS-Ebene Prozess, der nicht das, was ich tun möchte.
Kann ich also ein Modul zweimal im selben Racket-Programm instanziieren?