Szukaj…


Składnia

  • moduł moduł; ...; koniec
  • za pomocą modułu
  • moduł importu

Zawiń kod w module

module kluczowego module można użyć do uruchomienia modułu, który pozwala na uporządkowanie kodu i przestrzeni nazw. Moduły mogą definiować interfejs zewnętrzny, zazwyczaj składający się z export symboli ed. Aby obsługiwać ten interfejs zewnętrzny, moduły mogą mieć nieobsługiwane funkcje wewnętrzne i typy nieprzeznaczone do użytku publicznego.

Niektóre moduły istnieją przede wszystkim do zawijania typu i powiązanych funkcji. Takie moduły, zgodnie z konwencją, są zwykle nazywane liczbą mnogą nazwy typu. Na przykład, jeśli mamy moduł zapewniający typ Building , możemy nazwać taki moduł 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

Moduł może być następnie używany z instrukcją using :

julia> using Buildings

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

julia> height(ans)
830

Używanie modułów do organizowania pakietów

Zazwyczaj pakiety składają się z jednego lub więcej modułów. W miarę wzrostu liczby pakietów przydatne może być zorganizowanie głównego modułu pakietu w mniejsze moduły. Powszechnym idiomem jest definiowanie tych modułów jako podmodułów modułu głównego:

module RootModule

module SubModule1

...

end

module SubModule2

...

end

end

Początkowo ani moduł główny, ani podmoduły nie mają dostępu do eksportowanych przez siebie symboli. Jednak w celu rozwiązania tego problemu obsługiwane są importy względne:

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

W tym przykładzie wartość RootModule.z wynosi 30 .



Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow