Julia Language
moduli
Ricerca…
Sintassi
- modulo modulo; ...; fine
- usando il modulo
- modulo di importazione
Avvolgere il codice in un modulo
La parola chiave module
può essere utilizzata per iniziare un modulo, che consente di organizzare il codice e il namespace. I moduli possono definire un'interfaccia esterna, in genere costituita da simboli export
ed. Per supportare questa interfaccia esterna, i moduli possono avere funzioni interne non espresse e tipi non destinati all'uso pubblico.
Alcuni moduli esistono principalmente per racchiudere un tipo e funzioni associate. Tali moduli, per convenzione, vengono solitamente denominati con la forma plurale del nome del tipo. Ad esempio, se abbiamo un modulo che fornisce un tipo di Building
, possiamo chiamare tali moduli 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
Il modulo può quindi essere utilizzato con l'istruzione using
:
julia> using Buildings
julia> Building("Burj Khalifa", 163, 830)
163-story Burj Khalifa with height 830m
julia> height(ans)
830
Utilizzo dei moduli per organizzare i pacchetti
In genere, i pacchetti sono costituiti da uno o più moduli. Man mano che i pacchetti crescono, può essere utile organizzare il modulo principale del pacchetto in moduli più piccoli. Un idioma comune è definire quei moduli come sottomoduli del modulo principale:
module RootModule
module SubModule1
...
end
module SubModule2
...
end
end
Inizialmente, né i moduli radice né i sottomoduli hanno accesso ai reciproci simboli esportati. Tuttavia, le importazioni relative sono supportate per risolvere questo 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
In questo esempio, il valore di RootModule.z
è 30
.