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.