Решение на Пета задача от Кристиян Азманов

Обратно към всички решения

Към профила на Кристиян Азманов

Резултати

  • 0 точки от тестове
  • 2 бонус точки
  • 2 точки общо
  • 0 успешни тест(а)
  • 0 неуспешни тест(а)

Код

REPOSITORY = 'http://github.com/mitio/ruby-retrospective-3'
# Двадесет неща, които научих.
#
# 1. Научих какво прави операторът all? в Ruby, приложен върху върху променлива от тип Range.
# 2. Научих как се ползва find в Ruby, за вилтриране на данни
# 3. Научих как се ползва reduce за свеждане на някакъва колекция към единствена стойност
# 4. Научих, че може имплицитно да се извършват операции върху конкретната инстанция
# 5. Научих, какво прави метода take също както и flatten
# 6. Научих, че може да онаследяваме директно от Inline деклариран тип
# 7. Научих, че ако искаме да дефинираме повече от един класов метод, бихме могли да затворим
# групата в 'Class << self ... end'
# 8. Научих, че при инициализиране на обект може да се подава като параметър блок(синтактична конструкция)
# 9. Научих, че можем да ползваме 'not' върху резултат от 'to_proc.call' при предефиниране на оператор!
# 10. Научих, че можем да включим в нашия клас модула 'Enumerable' за да за да се възползваме
# от методите му в класове, които имат близка семантика
# 11. Научих, че е хубаво да ползваме 'public_send' вместо 'send'. 'Send' вика и 'private' методи
# докато 'public_send' вика само публични методи
# 12. Научих, че когато искаме да получим пресметнат следващ член за някакъв обект, бихме могли
# да ползваме метода .succ, който при цели числа, връща числено увеличено с единица
# 13. Научих, че когато искаме даден клас да може да бъде използван само в конкретен контекст и
# не извън него - по-добре е да дефинираме този клас вътре в нашият клас-контекст.
# 14. Научих, че можем да използваме метода .instance_eval, когато искаме да изпълним
# стринг, който съдържа Ruby код.
# 15. Научих, че когато искаме да приемем всички възможни извиквания на метод в даден
# string съдържащ ruby Код, който може да бъде изпълнен от instance_eval, най-удачно
# би било да ползваме 'method_missing'
# 16. Научих, че могат да се правят паралелни присвоявания
# 17. Научих, че в RUby като ако искаме да създадем псевдоним на метод, ползваме 'alias'
# 18. Научих, че когато искаме да забраним един обект да бъде променян трябва да го забразим с '.freeze'
# 19. Научих,че когато искаме да форматираме стринг с 'placeholder',
# бихме могли да ползваме '%s' в темплейта и после да го запълним с '%' argument
# 20. Научих, че когато искаме да използваме версия на метод в бащин клас, ползваме super
# Разбрах, че когато бащиният метод използва имена на методи, които са дефинирани в
# класа наследник, то тогава се ползват помощтните методи от наследника.

История (6 версии и 5 коментара)

Кристиян обнови решението на 21.01.2014 02:07 (преди почти 11 години)

+REPOSITORY = 'http://github.com/mitio/ruby-retrospective-3'
+
+# Двадесет неща, които научих.
+#
+# 1. Монадите в Haskell са много широка абстракция. Приложими са на много места,
+# но това ги прави трудни за научаване. Любимият ми пример е Maybe монадата,
+# в която верига от операции връща Nothing, ако връзка от веригата върне
+# Nothing.
+# 2. case клас (в Scala) е по-подходящ за промоция, от стандартен такъв.
+# 3. Проверката за възраст може да се реализира по-добре с полиморфизъм, отколкото
+# с case или if.

Кристиян обнови решението на 21.01.2014 02:08 (преди почти 11 години)

REPOSITORY = 'http://github.com/mitio/ruby-retrospective-3'
# Двадесет неща, които научих.
#
-# 1. Монадите в Haskell са много широка абстракция. Приложими са на много места,
-# но това ги прави трудни за научаване. Любимият ми пример е Maybe монадата,
+# 1. Научих какво прави операторът all? в Ruby, приложен върху върху променлива от тип Range.
-# в която верига от операции връща Nothing, ако връзка от веригата върне
+# 2. Научих как се ползва find в Ruby, за вилтриране на данни
-# Nothing.
+# 3. Научих как се ползва reduce за свеждане на някакъва колекция към единствена стойност
-# 2. case клас (в Scala) е по-подходящ за промоция, от стандартен такъв.
+# 4. Научих, че може имплицитно да се извършват операции върху конкретната инстанция
-# 3. Проверката за възраст може да се реализира по-добре с полиморфизъм, отколкото
+# 5. Научих, какво прави метода take също както и flatten
-# с case или if.

Кристиян обнови решението на 21.01.2014 02:09 (преди почти 11 години)

REPOSITORY = 'http://github.com/mitio/ruby-retrospective-3'
# Двадесет неща, които научих.
#
# 1. Научих какво прави операторът all? в Ruby, приложен върху върху променлива от тип Range.
# 2. Научих как се ползва find в Ruby, за вилтриране на данни
# 3. Научих как се ползва reduce за свеждане на някакъва колекция към единствена стойност
# 4. Научих, че може имплицитно да се извършват операции върху конкретната инстанция
-# 5. Научих, какво прави метода take също както и flatten
+# 5. Научих, какво прави метода take също както и flatten
+# 6. Научих, че може да онаследяваме директно от Inline деклариран тип
+# 7. Научих, че ако искаме да дефинираме повече от един класов метод, бихме могли да затворим
+ групата в 'Class << self ... end'
+# 8. Научих, че при инициализиране на обект може да се подава като параметър блок(синтактична конструкция)

Кристиян обнови решението на 21.01.2014 02:11 (преди почти 11 години)

REPOSITORY = 'http://github.com/mitio/ruby-retrospective-3'
# Двадесет неща, които научих.
#
# 1. Научих какво прави операторът all? в Ruby, приложен върху върху променлива от тип Range.
# 2. Научих как се ползва find в Ruby, за вилтриране на данни
# 3. Научих как се ползва reduce за свеждане на някакъва колекция към единствена стойност
# 4. Научих, че може имплицитно да се извършват операции върху конкретната инстанция
# 5. Научих, какво прави метода take също както и flatten
# 6. Научих, че може да онаследяваме директно от Inline деклариран тип
# 7. Научих, че ако искаме да дефинираме повече от един класов метод, бихме могли да затворим
групата в 'Class << self ... end'
-# 8. Научих, че при инициализиране на обект може да се подава като параметър блок(синтактична конструкция)
+# 8. Научих, че при инициализиране на обект може да се подава като параметър блок(синтактична конструкция)
+# 9. Научих, че можем да ползваме 'not' върху резултат от 'to_proc.call' при предефиниране на оператор!

Кристиян обнови решението на 21.01.2014 02:12 (преди почти 11 години)

REPOSITORY = 'http://github.com/mitio/ruby-retrospective-3'
# Двадесет неща, които научих.
#
# 1. Научих какво прави операторът all? в Ruby, приложен върху върху променлива от тип Range.
# 2. Научих как се ползва find в Ruby, за вилтриране на данни
# 3. Научих как се ползва reduce за свеждане на някакъва колекция към единствена стойност
# 4. Научих, че може имплицитно да се извършват операции върху конкретната инстанция
# 5. Научих, какво прави метода take също както и flatten
# 6. Научих, че може да онаследяваме директно от Inline деклариран тип
# 7. Научих, че ако искаме да дефинираме повече от един класов метод, бихме могли да затворим
групата в 'Class << self ... end'
# 8. Научих, че при инициализиране на обект може да се подава като параметър блок(синтактична конструкция)
-# 9. Научих, че можем да ползваме 'not' върху резултат от 'to_proc.call' при предефиниране на оператор!
+# 9. Научих, че можем да ползваме 'not' върху резултат от 'to_proc.call' при предефиниране на 'оператор!'

Кристиян обнови решението на 22.01.2014 01:52 (преди почти 11 години)

REPOSITORY = 'http://github.com/mitio/ruby-retrospective-3'
# Двадесет неща, които научих.
#
# 1. Научих какво прави операторът all? в Ruby, приложен върху върху променлива от тип Range.
# 2. Научих как се ползва find в Ruby, за вилтриране на данни
# 3. Научих как се ползва reduce за свеждане на някакъва колекция към единствена стойност
# 4. Научих, че може имплицитно да се извършват операции върху конкретната инстанция
# 5. Научих, какво прави метода take също както и flatten
# 6. Научих, че може да онаследяваме директно от Inline деклариран тип
# 7. Научих, че ако искаме да дефинираме повече от един класов метод, бихме могли да затворим
- групата в 'Class << self ... end'
+# групата в 'Class << self ... end'
# 8. Научих, че при инициализиране на обект може да се подава като параметър блок(синтактична конструкция)
-# 9. Научих, че можем да ползваме 'not' върху резултат от 'to_proc.call' при предефиниране на 'оператор!'
+# 9. Научих, че можем да ползваме 'not' върху резултат от 'to_proc.call' при предефиниране на оператор!
+# 10. Научих, че можем да включим в нашия клас модула 'Enumerable' за да за да се възползваме
+# от методите му в класове, които имат близка семантика
+# 11. Научих, че е хубаво да ползваме 'public_send' вместо 'send'. 'Send' вика и 'private' методи
+# докато 'public_send' вика само публични методи
+# 12. Научих, че когато искаме да получим пресметнат следващ член за някакъв обект, бихме могли
+# да ползваме метода .succ, който при цели числа, връща числено увеличено с единица
+# 13. Научих, че когато искаме даден клас да може да бъде използван само в конкретен контекст и
+# не извън него - по-добре е да дефинираме този клас вътре в нашият клас-контекст.
+# 14. Научих, че можем да използваме метода .instance_eval, когато искаме да изпълним
+# стринг, който съдържа Ruby код.
+# 15. Научих, че когато искаме да приемем всички възможни извиквания на метод в даден
+# string съдържащ ruby Код, който може да бъде изпълнен от instance_eval, най-удачно
+# би било да ползваме 'method_missing'
+# 16. Научих, че могат да се правят паралелни присвоявания
+# 17. Научих, че в RUby като ако искаме да създадем псевдоним на метод, ползваме 'alias'
+# 18. Научих, че когато искаме да забраним един обект да бъде променян трябва да го забразим с '.freeze'
+# 19. Научих,че когато искаме да форматираме стринг с 'placeholder',
+# бихме могли да ползваме '%s' в темплейта и после да го запълним с '%' argument
+# 20. Научих, че когато искаме да използваме версия на метод в бащин клас, ползваме super
+# Разбрах, че когато бащиният метод използва имена на методи, които са дефинирани в
+# класа наследник, то тогава се ползват помощтните методи от наследника.

За съжаление решението ти не минава тестовете, както и някои skeptic ограничения и дори имаш синтактични грешки в някои файлове, затова няма как да ти дам от редовните точки за тази задача.

От друга страна, много ми харесват нещата, които си научил и как си ги описал, затова ще ти дам бонус точки.