Julia Language
moduler
Sök…
Syntax
- modul modul; ...; slutet
- med modul
- importmodul
Packa in kod i en modul
module
nyckelord kan användas för att starta en modul, som gör det möjligt att organisera och köra namnkod. Moduler kan definiera ett externt gränssnitt, vanligtvis bestående av export
ed-symboler. För att stödja detta externa gränssnitt kan moduler ha icke-exporterade interna funktioner och typer som inte är avsedda för allmän användning.
Vissa moduler finns främst för att radera in en typ och tillhörande funktioner. Sådana moduler benämns vanligtvis med pluralform av typens namn enligt konvention. Om vi till exempel har en modul som tillhandahåller en Building
, kan vi kalla en sådan modul 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
Modulen kan sedan användas med det using
uttalandet:
julia> using Buildings
julia> Building("Burj Khalifa", 163, 830)
163-story Burj Khalifa with height 830m
julia> height(ans)
830
Använda moduler för att organisera paket
Vanligtvis består paket av en eller flera moduler. När paket växer kan det vara bra att organisera paketets huvudmodul i mindre moduler. Ett vanligt formspråk är att definiera dessa moduler som undermoduler för huvudmodulen:
module RootModule
module SubModule1
...
end
module SubModule2
...
end
end
Ursprungligen har varken rotmodul eller undermoduler åtkomst till varandras exporterade symboler. Relativ import stöds emellertid för att lösa problemet:
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
I det här exemplet är värdet på RootModule.z
30
.