Most programming languages allow you to divide your program into
smaller parts. These can be called "sub-routines", "procedures",
"functions" or "methods". In Pike, we use the term "method". Other
parts of the program can call the method, i. e. cause it to be
executed.
How to create a method
To create a method, you must define it, with a method
definition. A method definition follows this template:
access-modifiers type method-name( parameter-list )
method-body
Here is a description of the various parts in the definition
template:
-
The access-modifiers are optional. If they are present, they
control from where this method can be called. An example of an
access-modifier is private, which makes it impossible for
other programs to call this method.
-
The type is a data type, which specifies the type of
the value that the method returns. It is sometimes called the "return
type of the method", or the "type of the method". An example of a data
type is string. If the type is void, the method is
not supposed to return a value.
-
The method-name is the name of the method. This is an
identifier, for example plus,
destroy_all_enemy_ships or mUndoLatestChange. A
method should have a name that correctly describes what the method
does: a method that prints a list of customers should probably be
called something like print_customers.
-
The parameter-list is a comma-separated list of the
parameters of the method. A parameter acts like a variable,
which is local in the method, and which gets the corresponding
argument value from the method call as its initial value. Some
examples of parameters are "int number_of_cars" and
"string name". A method can have up to 256 parameters. If the
method doesn't expect to receive any argument values, the
parameter-list can be empty.
-
The method-body is a block, and can contain
statements and local definitions.
Sometimes we talk of the head and the body of a
method. The body is of course the method-body in the template
above, while the head consists of everything in the method definition
except the body. We can say that the method head is a description of
the method: its name, which arguments it expects, and what type of
value it will return. A part of the program that wants to call
a method, needs to know about the head of that method, but not about
the body.
The method body, on the other hand, contains the statements
that will be executed when the method is called. The body is therefore
a description of what, and how, the method performs whatever it is
that it does.
Here is a simple example of a method definition:
float average(float x1, float x2)
{
return (x1 + x2) / 2;
}
The method average returns the average of its two
arguments. Both the return value and the two parameters are
floating-point values. Here are some valid statements that contain
calls to average:
float x = average(19.0 + 11.0, 10.0);
average(27.13, x + 27.15);
float y = average(1.0, 2.0) + average(6.0, 7.1);
float z = average(1.0, average(2.0, 3.0));
When a method has finished what it has to do, we say that it
returns. The program will then continue executing immediately
after the place of the method call. If the method has produced a
value, we say that we return that value.
The return statement is used to send a value from a method
back to the point from where it was called:
return expression;
The return statement will also cause Pike to leave the
method, and continue execution immediately after the point where the
call to the method was made. You can have several return
statements in the same method. If the method is defined to return
void, you can use return without a value to leave
the method:
return;
If you reach the end of the body of a method, without having
returned first, the method will return zero as return value.