Диляна обнови решението на 14.11.2011 16:50 (преди около 13 години)
+ REPOSITORY = https://github.com/DilyanaTodorova/ruby-retrospective-1
+
+
+ # Двадесет неща, които научих.
+ #
+ # 1. В руби съществува splat оператор (обозначаван със #звездичка *). Служи за разделяне на масив на неговите #елементи.
+ #Отнася се и за всички обекти изпълнящи to_a. Методите също #могат да приемат *argument. Звездичката оказва че метода ще #получи множество от стойности.
+ # 2. flatten служи за премахване нивата на вложеност в #масива.
+ # Може да му се подаде параметър указваш до кое ниво да #стига. Използван за Hash обекти служи да върне стойността за #подаден като параметър ключ или множество от ключове.
+ # 3. Използването на итератори е по-доброто и кратко #решение от
+ # обикновения for оператор
+ # 4. Смесването на унгарска нотация, използвана от #Microsoft, и
+ # стила на змията (snake_case), възприет от руби обществото #не изглежда красиво. cntPeople - означава брояч. Научих, че #count_people се нарича стил на змията.
+ # 5. Руби позволява доста изрази да се напишат на един ред. #При изрази с inject на един ред точка и запетаята е #задължителна. Без точка и запетая inject е на три реда. Това #обяснява защо руби синтаксиса позволява да се използва ;
+ # 6. Задаването на стойност по подразбиране може да спести #евентуални скрити проблеми (бъгове). Неинициализираните #променливи са зло дори и в руби.
+ # 7. В Руби статичните функции/клас функциите се дефинират #като при дефинирането се използва self.
+ # 8. Статичните променливи се задават с @@
+ # 9. Миксирането може да бъде забавно. Модулите добавят #нова функционалност към класа, като директно достъпват #променливите на дадения клас.
+ # 10. Руби притежава динамични методи.
+ # 11. В руби Proc не е процедура. Процедурите в руби играят #роля на функция, могат да връщат стойност. Proc e обект, на #които се задава стойност използвана по-късно за изчисления. #Изпълнението на Proc e с метода call. Конвертирането между #Proc и блог става с &
+ # 12. В Руби lambda e функция, която създава Proc. #Основната разлика е, че lambda притежава проверка за броя #аргументи
+ #13. Символите също са обекти и имат дефиниран метод #to_proc, които търси функция със същото име.
+ #14. Метода send изпраща съобщение към обект - извиква #метод на обекта със същото име като стринга подаден като #аргумент на send. Метода send има опционални параметри - #алгументите към функцията.
+ #15. Създаването на стринг от стринг и стойност на #променлива става лесно чрез "някакъв
+#статичен текст #{променлива}"
+#16. Продуктите притежават промоции, а не промоциите продуктите
+#17. Метода detect за разлика от select връща първата намерена #стойност
+#18. Duck Typing е една от хубавите страни на динамичните езици #като руби. На практика обезмисля използването на полиморфизма #чрез наследяване. При подаването на параметри няма типове, #така че трябва просто да се дефинира по един клас за всеки #необходим клас. Миксирането се справя добре с преизползването #на код.
+#19. В руби съществува библиотека за изчисляване на числа с #голяма прецизност. Числата се представят под формата на дроби, #а класа е BigDecimal.
+#20. Класа стирнг има удобен начин за извеждането на аргументи.
+#21. Функциите нямат нужда от скобки за параметрите. Когато се #използват скобки е добре между запетаята на първия аргумент и #втория да има един спейс разстояние.
+
+ #22. Подобно на други езици в руби има именувани #пространства съдържащи в себе си набор от класове. Това помага #а подреждането на кода и избягването на конфликти при имената. #Достъпването на класове в намеспейса става по подобен на си #начин, чрез оператора