Module import directive.
Import module[.submodule]
A Monkey program consists of one or more modules, each of which is represented by a single source file; the name of the module is taken from the name of the source file. For example, if your file is named "particles.monkey" then the module will be called "particles".
A module may 'import' other modules, gaining access to their declarations such as classes, functions, global variables, constants, etc. Imported modules in turn may import other modules, which may themselves import other modules, and so on.
To import another module, the Import keyword must be placed at the top of your source file, but after the Strict keyword if used.
Monkey also supports cyclic imports, whereby modules can import each other, gaining access to each other's declarations.
A common use case: importing the mojo module in a game application.
Import
mojo
Function
Main
()
' Game goes here!
End
In Strict mode, Strict should be declared before any imports:
Strict
Import
mojo
Function
Main
:
Int
()
' Game goes here!
Return
0
End
This runnable two-part example shows a main module followed by a module to be imported. They should be saved as two separate files in the same folder.
Main module:
' Main module, save as, eg. mygame.monkey
Import
hello
Function
Main
()
SayHello
End
Module to be imported:
' Save as hello.monkey
Function
SayHello
()
Print
"Hello"
End
The main module, mygame, can now access the SayHello function of the imported 'hello' module.
This two-part cyclic import example shows a main module, mygame, which imports multiple modules; each of these modules imports mygame in return.
Main module:
' Saved as mygame.monkey
Import
player
Import
rocket
Import
bullet
Function
Main
()
' Game goes here!
End
At the top of player.monkey, rocket.monkey and bullet.monkey:
Import
mygame
' ...
Because the main module, mygame, imports player, rocket and bullet, each module importing mygame can access all declarations in player, rocket and bullet. Any new imports added to mygame will automatically become available.