2017-11-26 1 views
-1

In einem Schienen-Projekt habe ich die Klasse:Welcher Teil des Klassennamens ist ein Modul?

class Police::Office 
end 

Jetzt erstelle ich ein Interactor im gleichen Namensraum:

class Police::Office::ConstructInteractor 
end 

1. Ist das erlaubt oder kann es Namenskonflikte provozieren?

2. Was ist Police::Office::ConstructInteractor?

Ist es eine Klasse in einem Modul wie:

module Police::Office 
    class ConstructInteractor 
    end 
end 

Oder eine Klasse in einer Klasse?

class Police::Office 
    class ConstructInteractor 
    end 
end 

Danke

Antwort

2

1. Ist das erlaubt

Natürlich ist es erlaubt ist. Klassen dürfen Konstanten enthalten. (Übrigens: Sie hätten nur ein paar Sekunden gebraucht, um es selbst auszuprobieren.)

oder kann es zu Namenskonflikten kommen?

Ich habe keine Ahnung, was das bedeutet, aber auch hier kann man es leicht, sich von nur & den Code einfügen kopieren testen Sie auf dem Laufenden und es laufen.

2. Was ist Police::Office::ConstructInteractor?

Ist es eine Klasse in einem Modul wie:

module Police::Office 
    class ConstructInteractor 
    end 
end 

Natürlich nicht. Sie haben Police::Office definiert, um eine Klasse früher zu sein, also ist es offensichtlich eine Klasse.

Oder eine Klasse in einer Klasse?

class Police::Office 
    class ConstructInteractor 
    end 
end 

Ja. Aber beachte, dass dies nicht eine "Klasse in einer Klasse" ist. Dies ist eine Konstante in einer Klasse. In Ruby verschachteln Klassen nicht wie in Beta, gBeta, Newspeak oder Scala (nicht einmal in Java). Zwischen der durch die Konstante Police::Office::ConstructInteractor referenzierten Klasse und der durch die Konstante Police::Office referenzierten Klasse besteht keinerlei Beziehung.

Verwandte Themen