Julia Language
Módulos
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
.