Imports et modules
Avec Elm, vous pouvez importer un module en utilisant le mot-clé import
:
import Html
Cela a pour effet d'importer le module Html
. Vous pouvez alors utiliser des fonctions et des types de ce module en utilisant leur chemin complet :
Html.div [] []
Vous pouvez aussi importer un module et exposer des fonctions spécifiques ou des types de ce module :
import Html exposing (div)
div
est alors inclus dans le scope courant. Vous pouvez l'utiliser directement :
div [] []
Vous pouvez même exposer tout ce que contient un module :
import Html exposing (..)
Vous devriez alors être capable d'utiliser chaque fonction et chaque type de ce module directement. Mais généralement, il est déconseillé de faire ainsi pour des raisons d'ambiguité et de conflits possibles entre les modules.
Modules et types avec le même nom
Beaucoup de modules exportent des types avec le même nom que le module. Par exemple, le module Html
a un type Html
et le module Task
a un type Task
.
Ainsi, cette fonction qui retourne un élément Html
:
import Html
myFunction : Html.Html
myFunction =
...
Est équivalente à :
import Html exposing (Html)
myFunction : Html
myFunction =
...
Dans le premier exemple nous importons uniquement le module Html
et utilisons le chemin complet Html.Html
.
Dans le deuxième, nous exposons le type Html
du module Html
et utilisons le type Html
directement.
Déclarations de modules
Lorsque vous créez un module avec Elm, vous ajoutez la déclaration module
en haut du fichier :
module Main exposing (..)
Main
est le nom du module. exposing (..)
signifie que vous souhaitez exposer toutes les fonctions et les types de ce module. Elm s'attend à trouver ce module dans un fichier appelé Main.elm, c'est à dire un fichier avec le même nom que le module.
Vous pouvez avoir des structures de fichiers plus profondes au sein d'une application. Par exemple, le fichier Players/Utils.elm devrait avoir la déclaration :
module Players.Utils exposing (..)
Vous pourrez alors importer ce module de n'importe où en utilisant :
import Players.Utils