colobot-data/help/P/cbot/this.txt.bak

55 lines
1.8 KiB
Plaintext
Raw Normal View History

\b;Instrukcja \c;this\n;
Czasami metoda \l;klasy\u cbot\class; potrzebuje wska<6B>nika do instancji, w kt<6B>rej dzia<69>a. Na przyk<79>ad instancja mo<6D>e chcie<69> przekaza<7A> wska<6B>nik do samej siebie jako parametr dla innej funkcji. Odwo<77>anie wprost poprzez \c;this\n; jest dost<73>pne r<>wnie<69> dla metod; \c;this\n; jest odwo<77>aniem do bie<69><65>cej instancji.
\c;
\s;public class MojaKlasa
\s;{
\s; int m_int;
\s; string m_str;
\s; void MojaFunkcja()
\s; {
\s; InnaFunkcja(this);
\s; m_int = 2;
\s; }
\s;}
\s;
\s;void InnaFunkcja(MojaKlasa obj)
\s;{
\s; message(obj.m_str);
\s;}
\s;
\s;extern void object::Test()
\s;{
\s; MojaKlasa item();
\s; item.m_str = "Cze<7A><65>";
\s; item.MojaFunkcja(); // wy<77>wietla "Cze<7A><65>"
\s;}
\n;
Mo<EFBFBD>na r<>wnie<69> umie<69>ci<63> \c;this\n; przed nazw<7A> pola w metodzie, ale nie jest to konieczne. W powy<77>szym przyk<79>adzie metody \c;MojaFunkcja()\n; nast<73>puj<75>ce dwie linie maj<61> identyczne znaczenie:
\c;
\s; m_int = 2;
\s; this.m_int = 2; // identyczne
\n;
R<EFBFBD>wnie<EFBFBD> w metodzie klasy \c;\l;object\u cbot\object;\n; mo<6D>na u<>y<EFBFBD> \c;this.\n; przed nazw<7A> pola.
\c;
\s;extern void object::Display()
\s;{
\s; message(orientation);
\s; message(this.orientation); // to samo ale
\s; // bardziej jednoznacznie
\s;}
\n;
Jednak<EFBFBD>e je<6A>li nazwa pola jest ukryta poprzez deklaracj<63> parametru lub zmiennej, nale<6C>y u<>y<EFBFBD> \c;this\n;. W nast<73>puj<75>cym przyk<79>adzie nazwa parametru \c;value\n; jest taka sama jak nazwa pola \c;value\n; w \l;klasie\u cbot\class; \c;MojaKlasa\n;, wobec tego w celu rozr<7A><72>nienia pola od parametru, konieczne jest napisanie \c;this.value\n;.
\c;
\s;public class MojaKlasa
\s;{
\s; int value;
\s; void Put( int value )
\s; {
\s; this.value = value;
\s; }
\s;}
\n;
\t;Zobacz r<>wnie<69>
\c;\l;class\u cbot\class;\n;
\l;Programowanie\u cbot;, \l;typy\u cbot\type; i \l;kategorie\u cbot\category;.