More Advanced Examples
Here are two more examples of method definitions:
int getDex()
{
int oldDex = Dex;
Dex = 0;
return oldDex;
}
private void
show_user(int|string id, void|string full_name)
{
write("Id: " + id + "\n");
if (full_name)
write("Full name: " + full_name + "\n");
}
The method getDex
returns the value of a non-local variable called Dex
,
but also changes the value of that variable to zero (0).
The method show_user
expects to receive either one or two arguments.
The first argument can be either an integer or a string.
The second argument is optional,
but if it is present it must be a string.
Here are some valid statements that contain calls to the two methods above:
getDex();
show_user(19);
show_user("john");
show_user(19, "John Doe");
show_user("john", "John Doe");
Side-effects in Methods
When working with methods,
you may want to be careful with side-effects.
A side-effect is anything that the method causes to change or happen,
except for the returned value.
Sometimes the side-effects are the reason for the method,
and sometimes they are a dangerous misfeature.
In the three examples above,
getDex
has the side-effect
of setting the value of the non-local variable Dex
to 0,
and show_user
has the side-effect
that it writes some text to the standard output.
We can guess that show_user
has been created just to write that text,
so this side-effect of show_user
is probably not a problem.
On the other hand,
if a programmer uses getDex
to get the value of the variable Dex
,
it could come as a surprise that this method also changes the value.