Виктор обнови решението на 27.01.2016 22:38 (преди над 9 години)
+REPOSITORY = 'https://github.com/victor2992/ruby-retrospective-2015-1'
+
+=begin
+
+Двадесет неща, които научих:
+
+1. Как да използвам hash, за да си спестя излишни проверки.
+2. Наличието на оператор <=>, както и факта, че реализирането му ми дава
+наготово всички функции от comparable.
+3. Много от функциите, като тази за закръгляне до знак след десетичната
+запетая ги има наготово и няма нужда аз да ги реализирам.
+4. Достъпът до елементите на масив може и да се осъществява, броеейки от края му.
+Например последния елемент може да се достъпи с [-1].
+5. Функциите values и keys за хешове връщат масиви, в които ключовете и стойностите
+са не непременно в реда, в който са в хеша, поради което не е добре да ги използвам
+ако искам да достъпя конкретен елемент.
+6. Функцията sample, дефинирана в Array и мога да използвам за генериране на
+произволен елемент от масив.
+7. Работа с области в Ruby - разликата между .. и ... при range.
+8. Какво представлява monkey patch.
+9. Как да работя с блокове, вместо да въртя цикли.
+10. Научих различни функции от Enumerable като reduce, map и др.
+11. Как да си структурирам цялостно решението, така че кодът ми да е четим.
+12. Как да използвам декартово произведение на множества, за са си генерирам
+целите тестета.
+13. Функцията each_slice и как да я използвам, когато трябва да групирам елементите
+е маси в по двойки.
+14. Как да използвам наследяването по - ефективно, за да ми се налага да си
+предефинирам минимален брой функции.
+15. Когато си предефинирам each, да използвам вече готовия, вместо да го пиша от
+нулата.
+16. Как да използвам reduce за операции различни от умножение и събиране, налагайки
+се да давам начална стойност.
+17. Функцията upto чрез която мога да извършвам определена операция много пъти, без
+да се налага да използвам цикъл.
+18. Когато имам израз с and или or, той се оценява до истина или лъжа и мога
+да избегна писането на ненужни if-oве.
+19. Да използвам вградените фукции за действия с множества като + и -.
+20. Функцията each_cons и как да я изполвам, когато искам да разгледам всички групи
+с определена дължина от поредни елементи.
+
+=end
-
2.
Не си използвал comparable в Card в 4-та задача :) -
5.
(Ключ => стойност)-ите в Hash са в реда на въвеждане. Тоест като кажеш{b: 1, a: 2}.each { |k, v| }
първо ще ек = :b; v = 1
, после другото. В документацията не пише експлицитно заvalues
иkeys
, но бих твърдял, че и те са в същия ред. Поне имат примери, които очакват такъв ред и в повечето spec-овете за езика пак се очаква подобно подреждане. ♔ ♕ ♖