Modules
Modules
Modules in Julia are separate variable workspaces, i.e. they introduce a new global scope. They are delimited syntactically, inside module
Name ... end
. Modules allow you to create top-level definitions (aka global variables) without worrying about name conflicts when your code is used together with somebody else’s. Within a module, you can control which names from other modules are visible (via importing), and specify which of your names are intended to be public (via exporting).
The following example demonstrates the major features of modules. It is not meant to be run, but is shown for illustrative purposes:
module MyModule using Lib using BigLib: thing1, thing2 import Base.show importall OtherLib export MyType, foo type MyType x end bar(x) = 2x foo(a::MyType) = bar(a.x) + 1 show(io::IO, a::MyType) = print(io, "MyType $(a.x)") end
Note that the style is not to in