When used within an object, this directive defines a goal to be called after the object has been loaded into memory. When used at a global level within a source file, this directive defines a goal to be called after the compiled source file is loaded into memory.
Multiple initialization directives can be used in a source file or in an object. Their goals will be called in the same order as the directives at loading time.
Categories and protocols cannot contain
as the initialization goals would lack a complete execution context that
is only available for objects.
Although technically a global
initialization/1 directive in a source
file is a Prolog directive, calls to Logtalk built-in predicates from it
are usually compiled to improve performance and providing better support
for embedded applications.
Some backend Prolog compilers declare
initialization as an operator
for a lighter syntax. But this makes the code non-portable and is
a practice best avoided.
Template and modes¶
% call the init/0 predicate after loading the % source file containing the directive: :- initialization(init).