Задача App Stores, обсъждане, решения


0

Захванал съм задачката да я докарам до пълни точки на локалните тестове, обаче нещо не мога да разбера. Ето кода - Цък , не мога да разбера защо голям брой тестове, които са с валидни данни моя код хвърля една и съща грешка, грешката, че рейтинга не е валиден, при положение, че се подава валиден рейтинг.

П.С. и няколко въпроса по авторското решение:

- защо се прави функция, която връща обект App и той се пушва към масива от апове. Нали чрез класа App се създава нов Ап който да се пушва в масива?

"const app = result.createApp('app', 'description of an app', 2, 3);" примерно.

- В авторското решение, ако има Ап с такова име, той се маха и се пушва новия Ап. Аз това, което разбирам от условието е да се ъпдейтне версията, описанието и рейтинга на ап-а който си го има в масива. Т.е. променяме му тези пропъртита с новите?

- В аторското решение не се използват setter-и, аз използвах, махнах ги и сега на локалните тестове имам доста грешки

"TypeError: Cannot set property version of #<App> which has only a getter"

-------------------

За да е по-ясно, ето пълното решение на задачката - App Stores - Solution




Отговори



0

Направо по точките:

- Функцията copyApp, прави копие на property-та на един app. uploadApp използват тази функция, за да си запазят версията, description-а и рейтинга на app-а. Така при нов release, той няма автоматично да се upload-не.

- Ако има app със съответното име е нужно само да се променят (update-нат) property-тата. Защо в авторското се маха от масива и после се добавя от края? Така в масива подредбата съвпада с реда на upload и метода listMostRecentApps() може доста тривиално да си свърши работата. Разбира се, други решения на този проблем също са ОК.

- Няма setter-и, защото нищо не е предвидено да се променя директно, а само чрез методите в условието. Не е грешно да ги има. В случая, твоята грешка, ако си ги изтрил setter-ите, а от конструктора още се опитваш да ги ползваш - ами, няма как да стане.


от cuki (7696 точки)


0

Цъки, когато решавахме задачата за battle manager-a, никога не копирахме обектите (примерно amy unit-ите).

Как да преценим кога да ги копираме, кога не? 


от ktsvetanov (705 точки)

1
Ами зависи дали ви трябва копие или референция. В случая трябва като промените версията на някой app, на местата където ставата версия е upload-вана да си остане старата версия. Как - копие. В battlemanager нямаше нужда от такива гимнастики, съответно няма значение. Ако пък е задължително нужна с промяна на оригиналния обект да се промени навсякъде - пазиш референция.

от cuki (7696 точки)