Zoeken…


Syntaxis

  • module module; ...; einde
  • met behulp van module
  • importmodule

Wrap code in een module

De module zoekwoord kan worden gebruikt om een module, die het mogelijk maakt de code te worden georganiseerd en naamruimten beginnen. Modules kunnen een externe interface definiëren, meestal bestaande uit export symbolen. Ter ondersteuning van deze externe interface kunnen modules niet-geëxporteerde interne functies en typen hebben die niet bedoeld zijn voor openbaar gebruik.

Sommige modules bestaan voornamelijk om een type en bijbehorende functies in te pakken. Zulke modules worden gewoonlijk genoemd met de meervoudsvorm van de naam van het type. Bijvoorbeeld, als we een module die een biedt Building soort, we kunnen een dergelijke module noemen 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

De module kan dan worden gebruikt in combinatie met het using statement:

julia> using Buildings

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

julia> height(ans)
830

Modules gebruiken om pakketten te organiseren

Gewoonlijk bestaan pakketten uit een of meer modules. Naarmate pakketten groeien, kan het handig zijn om de hoofdmodule van het pakket in kleinere modules te organiseren. Een gemeenschappelijk idioom is om die modules te definiëren als submodules van de hoofdmodule:

module RootModule

module SubModule1

...

end

module SubModule2

...

end

end

Aanvankelijk hebben noch de rootmodule noch de submodules toegang tot elkaars geëxporteerde symbolen. Relatieve invoer wordt echter ondersteund om dit probleem aan te pakken:

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 dit voorbeeld is de waarde van RootModule.z 30 .



Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow