Пламен обнови решението на 26.10.2011 19:57 (преди около 13 години)
Добавил съм едни подсказки в условието на задачата. Погледни ги и виж какви идеи ще ти дадат за промяна на кода.
tags_filter
е доста странен метод. Може би song.matches_tags?
е по-добре.
Благодаря! Имаше голяма полза от подсказките, не че съм успял да се справя перфектно... :)
- Конструктора ти на
Song
е забавен, но вместо да правишinstance_variable_set
, по-добре да минаваш сsend "#{attribute}=", value
. Трябва да ползвашattr_accessor
. Браво, че си се сетил. - Вместо
songs_string.each_line.map
трябваше да напишешsongs_string.lines.map
. По-добре се чете. - В
matches_tags?
трябваше да напишешwanted.all? {} and unwanted.none? {}
. Това с болевата логика е иreturn
-а вif
-а е много неинтуитивно. - Хубаво си съкратил
matches?
, но не ми харесва как прави винаги тези проверки. По-добре е да не сравняваш име, ако не ти е подадено:name
.
Иначе, хубаво, кратко и елеганто. Браво. Давам ти две бонус точки. Третата не ти я давам заради if all?; return none?; end; false
сегмента.
Това с if all?; return none?; end; false
го направих, защото ми се струваше, че иначе редът става много дълъг. Първоначално беше така, както трябваше да се напише :)
А за да не се проверява за име, когато нямаме зададено :name
това :name => criteria[:name] && @name == criteria[:name]
удачно ли е?