85 lines
3.4 KiB
Plaintext
85 lines
3.4 KiB
Plaintext
\b;Функции
|
||
С помощью функций программу можно разделить на несколько частей, которые будут выполнять каждая свою работу.
|
||
Давайте представим следующую программу¦:
|
||
\c;
|
||
\s;extern void object::Remote( )
|
||
\s;{
|
||
\s; send("order", 1, 100);
|
||
\s; wait(5);
|
||
\s; send("order", 3, 100);
|
||
\s; wait(5);
|
||
\s; send("order", 2, 100);
|
||
\s; wait(5);
|
||
\s; send("order", 4, 100);
|
||
\s; wait(5);
|
||
\s;}
|
||
\n;
|
||
\c;send\n; и \c;wait\n; повторяются много раз. Поэтому, мы можем сделать функцию, которая заменит их:
|
||
\c;
|
||
\s;void object::SendToPost( float op )
|
||
\s;{
|
||
\s; send("order", op, 100);
|
||
\s; wait(5);
|
||
\s;}
|
||
\s;extern void object::Remote( )
|
||
\s;{
|
||
\s; SendToPost(1);
|
||
\s; SendToPost(3);
|
||
\s; SendToPost(2);
|
||
\s; SendToPost(4);
|
||
\s;}
|
||
\n;
|
||
Функции могут иметь параметры¦:
|
||
\c;
|
||
\s;void Example( int a, float x, string s )
|
||
\n;
|
||
Функция \c;Exemple\n; функция получит целое \c;a\n;, число с плавающей точкой \c;x\n; и строку \c;s\n;. Параметры - это ничто иное, как просто копии значений в переменных. Если вы передадите \c;int\n; функции, то ее параметр станет копией этого значения, т.е. функция сможет изменять эту копию незатрагивая оригинал.
|
||
|
||
Если вы передадите \l;классу\u cbot\class; массив \l;array\u cbot\array; как параметр функции, то функция получит только \l;ссылку\u cbot\pointer; к экземпляру массива. Это означает, что если вы измените массив в функции, то будет модифицирован только экземпляр этой функции.
|
||
|
||
Функция может возвращать результат с помощью инструкции \c;\l;return\u cbot\return;\n;. Поэтому функции должны быть объявлены только как тип:
|
||
\c;
|
||
\s;float Mean( float a, float b )
|
||
\s;{
|
||
\s; return (a+b)/2;
|
||
\s;}
|
||
\s;
|
||
\s;extern void object::Test( )
|
||
\s;{
|
||
\s; float value;
|
||
\s; value = Mean(2, 6);
|
||
\s; message( value ); // will display 4
|
||
\s;}
|
||
\n;
|
||
Пример¦:
|
||
\c;
|
||
\s;float Pi( )
|
||
\s;{
|
||
\s; return 3.1415;
|
||
\s;}
|
||
\s;
|
||
\s;string Sign( float a )
|
||
\s;{
|
||
\s; if ( a > 0 ) return "positive";
|
||
\s; if ( a < 0 ) return "negative";
|
||
\s; return "null";
|
||
\s;}
|
||
\n;
|
||
вы также можете объявить несколько функций с одинаковыми именами, но разными параметрами¦:
|
||
\c;
|
||
\s;float Pythagoras( float a, float b )
|
||
\s;{
|
||
\s; return sqrt((a*a)+(b*b));
|
||
\s;}
|
||
\s;
|
||
\s;float Pythagoras( float a, float b, float c )
|
||
\s;{
|
||
\s; return sqrt((a*a)+(b*b)+(c*c));
|
||
\s;}
|
||
\n;
|
||
CBOT будет вызывать ту или иную функцию так, что вызов будет зависеть отт параметров.
|
||
Вы также можете объявить функцию \l;общедоступной\u cbot\public;, так что ее смогут использовать остальне боты.
|
||
|
||
\t;См. также
|
||
\l;Инструкции\u cbot;, \l;типы\u cbot\type; и \l;категории\u cbot\category;.
|