在模块中包装代码
module
关键字可用于开始一个模块,该模块允许对代码进行组织和命名。模块可以定义外部接口,通常由 export
ed 符号组成。为了支持这种外部接口,模块可以具有未公开的内部功能和不适合公共使用的类型 。
一些模块主要用于包装类型和相关函数。按照惯例,这些模块通常以类型名称的复数形式命名。例如,如果我们有一个提供 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