71 / 103

Choosing a value or pointer receiver

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.)

Topshiriqlar

Yechimni kodning pastki qismidagi Topshiriqlar bo'limiga yozing, so'ng Submit tugmasini bosing. Mavzu mustahkam o'zlashishi uchun ikkala topshiriqni ham bajaring.

1-topshiriq

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}.

2-topshiriq

Vertex uchun pointer receiver'li Teskari() metodini yozing: ikkala koordinataning ishorasini teskarisiga o'zgartirsin.