수색…


통사론

  • 모듈 모듈; ...; 종료
  • 모듈 사용
  • 가져 오기 모듈

모듈에서 코드 줄 바꾸기

module 키워드는 module 을 시작하는 데 사용할 수 있습니다.이 module 을 사용하면 코드를 구성하고 네임 스페이스를 지정할 수 있습니다. 모듈은 일반적으로 export 기호로 구성된 외부 인터페이스를 정의 할 수 있습니다. 이 외부 인터페이스를 지원하기 위해 모듈에는 공개되지 않도록 내부에 알려지지 않은 내부 함수유형 이있을 수 있습니다.

일부 모듈은 주로 형식 및 관련 함수를 래핑하기 위해 존재합니다. 일반적으로 이러한 모듈은 유형 이름의 복수형으로 명명됩니다. 예를 들어 Building 유형을 제공하는 모듈이있는 경우 이러한 모듈 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

그런 다음 모듈을 using 문과 함께 사용할 수 있습니다.

julia> using Buildings

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

julia> height(ans)
830

모듈을 사용하여 패키지 구성

일반적으로 패키지 는 하나 이상의 모듈로 구성됩니다. 패키지가 커짐에 따라 패키지의 기본 모듈을 더 작은 모듈로 구성하는 것이 유용 할 수 있습니다. 일반적인 관용구는 이러한 모듈을 기본 모듈의 하위 모듈로 정의하는 것입니다.

module RootModule

module SubModule1

...

end

module SubModule2

...

end

end

초기에는 루트 모듈이나 서브 모듈 모두 서로의 내 보낸 기호에 액세스 할 수 없습니다. 그러나이 문제를 해결하기 위해 상대적인 수입이 지원됩니다.

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

이 예제에서 RootModule.z 의 값은 30 입니다.



Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow