Buscar..


Sintaxis

  • módulo Módulo; ...; fin
  • usando el módulo
  • Módulo de importación

Envolver código en un módulo

La palabra clave del module se puede utilizar para comenzar un módulo, lo que permite organizar el código y el espacio de nombre. Los módulos pueden definir una interfaz externa, que generalmente consiste en símbolos export . Para admitir esta interfaz externa, los módulos pueden tener funciones y tipos internos no exportados que no están destinados para uso público.

Algunos módulos existen principalmente para envolver un tipo y funciones asociadas. Dichos módulos, por convención, generalmente se nombran con la forma plural del nombre del tipo. Por ejemplo, si tenemos un módulo que proporciona un tipo de Building , podemos llamar a dicho módulo 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

El módulo se puede usar con la instrucción using :

julia> using Buildings

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

julia> height(ans)
830

Uso de módulos para organizar paquetes

Normalmente, los paquetes constan de uno o más módulos. A medida que los paquetes crecen, puede ser útil organizar el módulo principal del paquete en módulos más pequeños. Un idioma común es definir esos módulos como submódulos del módulo principal:

module RootModule

module SubModule1

...

end

module SubModule2

...

end

end

Inicialmente, ni el módulo raíz ni los submódulos tienen acceso a los símbolos exportados de cada uno. Sin embargo, las importaciones relativas son compatibles para abordar este problema:

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

En este ejemplo, el valor de RootModule.z es 30 .



Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow