Recherche…


Syntaxe

  • module module; ...; fin
  • en utilisant le module
  • Module d'importation

Wrap Code dans un module

Le mot-clé du module peut être utilisé pour démarrer un module, ce qui permet d’organiser le code et d’en placer les noms. Les modules peuvent définir une interface externe, généralement composée de symboles ed export . Pour prendre en charge cette interface externe, les modules peuvent avoir des fonctions internes non exportées et des types non destinés à un usage public.

Certains modules existent principalement pour envelopper un type et des fonctions associées. Ces modules, par convention, sont généralement nommés avec la forme plurielle du nom du type. Par exemple, si nous avons un module qui fournit un type de Building , nous pouvons appeler un tel module 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

Le module peut alors être utilisé avec l'instruction using :

julia> using Buildings

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

julia> height(ans)
830

Utilisation de modules pour organiser les packages

En règle générale, les packages se composent d'un ou de plusieurs modules. À mesure que les paquets grandissent, il peut être utile d’organiser le module principal du package en modules plus petits. Un idiome commun consiste à définir ces modules en tant que sous-modules du module principal:

module RootModule

module SubModule1

...

end

module SubModule2

...

end

end

Initialement, ni le module racine ni les sous-modules n’ont accès aux symboles exportés les uns des autres. Cependant, les importations relatives sont prises en charge pour résoudre ce problème:

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

Dans cet exemple, la valeur de RootModule.z est 30 .



Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow