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

55 lines
1.8 KiB
Plaintext

\b;Instrukcja \c;this\n;
Czasami metoda \l;klasy\u cbot\class; potrzebuje wskaźnika do instancji, w której działa. Na przykład instancja może chcieć przekazać wskaźnik do samej siebie jako parametr dla innej funkcji. Odwołanie wprost poprzez \c;this\n; jest dostępne również dla metod; \c;this\n; jest odwołaniem do bieżą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ść";
\s; item.MojaFunkcja(); // wyświetla "Cześć"
\s;}
\n;
Można również umieścić \c;this\n; przed nazwą pola w metodzie, ale nie jest to konieczne. W powyższym przykładzie metody \c;MojaFunkcja()\n; następujące dwie linie mają identyczne znaczenie:
\c;
\s; m_int = 2;
\s; this.m_int = 2; // identyczne
\n;
Również w metodzie klasy \c;\l;object\u cbot\object;\n; można użyć \c;this.\n; przed nazwą pola.
\c;
\s;extern void object::Display()
\s;{
\s; message(orientation);
\s; message(this.orientation); // to samo ale
\s; // bardziej jednoznacznie
\s;}
\n;
Jednakże jeśli nazwa pola jest ukryta poprzez deklarację parametru lub zmiennej, należy użyć \c;this\n;. W następującym przykł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óż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ż
\c;\l;class\u cbot\class;\n;
\l;Programowanie\u cbot;, \l;typy\u cbot\type; i \l;kategorie\u cbot\category;.