colobot-data/help/cbot/R/this.txt

55 lines
2.3 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

\b;Инструкция \c;this\n;
Иногда, методы \l;класса\u cbot\class; должны знать ссылку уже действующего экземпляра. Например, экземпляр, возможно, захочет передать свои ссылки другой функции. Неявное имя ссылки \c;this\n; доступно для методов, а также \c;this\n; это ссылка на текущий экземпляр.
\c;
\s;public class MyClass
\s;{
\s; int m_int;
\s; string m_str;
\s; void MyFunction()
\s; {
\s; OtherFunction(this);
\s; m_int = 2;
\s; }
\s;}
\s;
\s;void OtherFunction(MyClass obj)
\s;{
\s; message(obj.m_str);
\s;}
\s;
\s;extern void object::Test()
\s;{
\s; MyClass item();
\s; item.m_str = "Hello";
\s; item.MyFunction(); // вывести "Hello"
\s;}
\n;
Вы можете написать \c;this\n; перед методом, но в этом нет необходимости. В приведенном ниже примере мы видим две строго одинаковых строки:
\c;
\s; m_int = 2;
\s; this.m_int = 2; // они идентичны
\n;
В методе класса \c;\l;object\u cbot\object;\n;, вы можете использовать \c;this.\n; перед именем поля.
\c;
\s;extern void object::Display()
\s;{
\s; message(orientation);
\s; message(this.orientation); // тоже самое, но
\s; // более четко
\s;}
\n;
Однако, если имя поля неизвестно, то объявление параметра или переменной необходимо использовать вместе с \c;this\n;. В следущем примере имя параметра \c;value\n; такое же, как и имя поля \c;value\n; \l;класса\u cbot\class; \c;MyClass\n;, поэтому мы должны написать \c;this.value\n; для того, чтобы отличить поле от параметра.
\c;
\s;public class MyClass
\s;{
\s; int value;
\s; void Put( int value )
\s; {
\s; this.value = value;
\s; }
\s;}
\n;
\t;См. также
\c;\l;class\u cbot\class;\n;
\l;Программирование\u cbot;, \l:типы\u cbot\type; и \l;категории\u cbot\category;.