Suche…


Syntax

  • Modul Modul; ... Ende
  • unter Verwendung des Moduls
  • Modul importieren

Code in ein Modul einschließen

Das module kann verwendet werden, um ein Modul zu beginnen, mit dem Code organisiert und Namespaces erstellt werden kann. Module können eine externe Schnittstelle definieren, die typischerweise aus export Symbolen besteht. Um diese externe Schnittstelle zu unterstützen, können Module nicht exportierte interne Funktionen und Typen aufweisen, die nicht für die öffentliche Verwendung bestimmt sind.

Einige Module existieren hauptsächlich, um einen Typ und zugehörige Funktionen zu umschließen. Solche Module werden normalerweise durch die Pluralform des Namens des Typs benannt. Wenn wir beispielsweise ein Modul haben, das einen Building bereitstellt, können wir ein solches Modul Buildings .

module Buildings

immutable Building
    name::String
    stories::Int
    height::Int  # in metres
end

name(b::Building) = b.name
stories(b::Building) = b.stories
height(b::Building) = b.height

function Base.show(io::IO, b::Building)
    Base.print(stories(b), "-story ", name(b), " with height ", height(b), "m")
end

export Building, name, stories, height

end

Das Modul kann dann mit der using Anweisung verwendet werden:

julia> using Buildings

julia> Building("Burj Khalifa", 163, 830)
163-story Burj Khalifa with height 830m

julia> height(ans)
830

Verwenden von Modulen zum Verwalten von Paketen

In der Regel bestehen Pakete aus einem oder mehreren Modulen. Wenn Pakete größer werden, kann es sinnvoll sein, das Hauptmodul des Pakets in kleinere Module zu organisieren. Eine gängige Redewendung ist das Definieren dieser Module als Submodule des Hauptmoduls:

module RootModule

module SubModule1

...

end

module SubModule2

...

end

end

Anfangs haben weder das Wurzelmodul noch die Submodule Zugriff auf die exportierten Symbole der jeweils anderen. Es werden jedoch relative Importe unterstützt, um dieses Problem zu beheben:

module RootModule

module SubModule1

const x = 10
export x

end

module SubModule2

# import submodule of parent module
using ..SubModule1
const y = 2x
export y

end

# import submodule of current module
using .SubModule1
using .SubModule2
const z = x + y

end

In diesem Beispiel beträgt der Wert von RootModule.z 30 .



Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow