![]() |
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
As seen in the previous chapter, it's possible to assign the reference of a function to a function variable with another name. Another handy feature is that it's possible to set this new function up so that it defines a number of the arguments to the original function as constants, leaving only the remaining as variables. Look at this example:
e.g. void tell_player(object player, string mess) { player->catch_msg(mess + "\n"); } void my_func() { function mod_tell; mod_tell = &tell_player(this_player(), ); mod_tell("Hello!"); // Equivalent to tell_player(this_player(), "Hello!"); } |
This works fine for any number of arguments. The remaining arguments
will be filled in left to right, just as you would like to expect. i.e.
a function with the header void func(int a, int b, int c, int d,
int e)
defined as function my_func = func(1, , 3, 4,)
and called
as my_func(100, 101)
is eqvivalent to the call func(1, 100,
3, 4, 101)
.
As you now understand, the &function_name(argument_list)
-way of
obtaining function references always count as a partial function
definition, even if the argument list is empty. This really isn't that
important from a practical point of view, not from your end anyway,
but it's good to know what you're talking about even so.