Qiymat yoki pointer receiver'ni tanlash
Pointer receiver'dan foydalanishning ikki sababi bor.
Birinchisi — metod receiver ko'rsatib turgan qiymatni o'zgartira olishi uchun.
Ikkinchisi — har bir metod chaqiruvida qiymatni nusxalashdan qochish uchun. Masalan, receiver katta struct bo'lsa, bu samaraliroq bo'lishi mumkin.
Bu misolda Scale ham, Abs ham *Vertex receiver tipiga ega, garchi Abs metodiga o'z receiver'sini o'zgartirish shart bo'lmasa ham.
Umuman olganda, ma'lum bir tipdagi barcha metodlar yo qiymat, yo pointer receiver'larga ega bo'lishi kerak, ularning aralashmasi bo'lmasligi lozim.
(Buning sababini keyingi bir necha sahifada ko'ramiz.)
Yechimni kodning pastki qismidagi
Topshiriqlarbo'limiga yozing, so'ng Submit tugmasini bosing. Mavzu mustahkam o'zlashishi uchun ikkala topshiriqni ham bajaring.
Vertex uchun pointer receiver'li Normallash() metodini yozing: vektorni o'z uzunligiga bo'lib, uzunligini 1 ga keltirsin (mavjud Scale va Abs dan foydalaning). Nol vektor o'zgarmasin. Masalan, {3, 4} — {0.6, 0.8}.
Vertex uchun pointer receiver'li Teskari() metodini yozing: ikkala koordinataning ishorasini teskarisiga o'zgartirsin.