0Pricing
Mojo Academy · Lekcja

Metoda __moveinit__

Zdefiniuj sposób przenoszenia własnego typu.

Metoda __moveinit__ to bezpłatna lekcja Mojo Academy na CoddyKit. To lekcja 3 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Mojo Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Mojo Academy zawiera 4 lekcji w sumie.

Definiowanie sposobu przenoszenia

Aby przenieść wartość, Mojo wywołuje specjalną metodę o nazwie __moveinit__. Tworzy ona nową instancję, przejmując starą. 🚚

Uruchamiana przy transferze

Po użyciu operatora transferu w postaci daszka uruchamia się __moveinit__. Metoda relokuje wartość zamiast duplikować jej dane.

var b = a^   # calls __moveinit__

Sygnatura metody

Metoda otrzymuje nową instancję oraz źródłową wartość typu owned. Ponieważ źródło jest własnością metody, można je bezpośrednio zużyć.

fn __moveinit__(out self, owned existing: Self):
    self.ptr = existing.ptr

Przejmuj, nie kopiuj

Chodzi o przeniesienie zasobów, takich jak wskaźnik na stertę, ze źródła do nowej instancji zamiast ponownej alokacji.

Bez podwójnego zwalniania

Po przeniesieniu źródło nie może zwolnić przekazanych danych. Mojo dba o to, aby bufor należał dokładnie do jednej instancji.

Tanie dla dużych wartości

Ponieważ __moveinit__ zmienia właściciela zamiast klonować bajty, przeniesienie ogromnego bufora kosztuje niemal nic. Na tym polega zysk wydajnościowy.

Źródło staje się nieważne

Po przeniesieniu źródło zostaje zużyte. Mojo uniemożliwia jego odczyt, gwarantując, że przeniesione dane nie zostaną ponownie użyte.

Często generowana automatycznie

Podobnie jak w przypadku kopiowania, zwykle nie trzeba pisać tej metody. Zgodność z Movable pozwala Mojo automatycznie wygenerować __moveinit__ dla poszczególnych pól.

Kiedy napisać ją samodzielnie

Dostosuj __moveinit__, gdy typ jest właścicielem zasobu wymagającego jawnego przekazania, na przykład ręcznie zarządzanego wskaźnika.

W parze z kopiowaniem

Typ może definiować zarówno kopiowanie, jak i przenoszenie. Mojo wybierze wtedy tańszą opcję, preferując przeniesienie, gdy źródło nie jest już potrzebne.

Umożliwia tanie przekazywanie własności

__moveinit__ sprawia, że przekazywanie własności jest szybkie i bezpieczne. Pozwala wartościom przepływać przez program bez niepotrzebnego duplikowania.

Szybkie sprawdzenie

Sprawdźmy inicjalizator przenoszenia.

Podsumowanie

__moveinit__ definiuje sposób, w jaki Państwa typ przenosi zasoby do nowej instancji — tanio i z wykorzystaniem instancji źródłowej. 🎯

Często zadawane pytania

Czy lekcja „Metoda __moveinit__” jest bezpłatna?

Tak — pełny tekst „Metoda __moveinit__” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Mojo Academy, przejdź na CoddyKit PRO. Kurs Mojo Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Metoda __moveinit__”?

Zdefiniuj sposób przenoszenia własnego typu. Ćwiczysz Mojo Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć Mojo Academy?

Nie wymagamy żadnego doświadczenia. Mojo Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 3 z 4.

Ile czasu zajmuje lekcja „Metoda __moveinit__”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji Mojo Academy?

Tak. Każda lekcja Mojo Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Semantyka kopiowania a przenoszenia
  2. Metoda __copyinit__
  3. Metoda __moveinit__
  4. Niszczenie i __del__
← Powrót do Mojo Academy