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 .



Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow