Решение на Четвърта задача от Ивана Йовчева

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

Към профила на Ивана Йовчева

Резултати

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

Код

RETROSPECTORY = 'https://github.com/Ivb1990/ruby-retrospective-1/tree/master/solutions'
#Задача 1:
# 1. Собственият клас се достъпва със self и не е удачно да се
#извиква по друг начин.
# 2. Циклите не са красиво и удобно средство. В ruby има готов
#метод за всичко.
# 3. Методът map може да спести обхождане на елементи.
# 4. Научих как работи inject и, че не се ползва само за
#сумиране, умножение и т.н. елементи на масив.
# 5. За добавяне елемент в хеш е достатъчно hash[:a] = 30 , #примерно.
# 6. Последният елемент от блок е връщаният резултат, ако има #такъв.
# 7. Методи могат да се прилагат и в един и същ израз върху вече
#приложени други такива.
#
#
#Задача 2:
# 1. С map лесно може да се обработва string, подаден като #вход.
# 2. Как от подаден string можем да извлечем елементи от #съдържанието му и да ги "присвоим" на атрибутите на даден клас.
# 3. case ... when.... when.... when.... не е влагане.
# 4. Научих за какво служи lines.
# 5. Нещата не са толкова прости, колкото изглеждат. Трябва да
#се дефинира всяка "подробност". В първото домашно пропуснах
#това при проверката за criteria.
# 6. Един конструктор е достатъчен. Не е необходимо да #инициализираме отделно всеки елемент от входа.
# 7. За да може да се каже, че даден код е добър (на ruby
#специално), трябва съдържанието му да е максимално близо до
#естествения език, т.е. всичко да се дефинира така, че само
#да обяснява себе си, без необходимост този, който го чете
#да мисли за какво става дума.
#
#Задача 3:
#
# 1. Когато правим конструктор на клас, много по-удобно е #неговите параметри да се задават като стойности на атрибути,
#върху които след това да извършим определени действия,
#отколкото да извършим тези действия директно в конструктора.
# 2. Вместо да съставяме малко класове със сложни методи, по-#удачно е да разбием класовете, съответно да им дефинираме
#по-прости методи. Така кодът става по-разбираем и по-лесен за
#съставяне и употреба.
# 3. Вместо хешове и масиви, по-удобно и добро е да се
#ползват атрибути на клас. Така, вместо на търсим към кой #елемент на хеша/масива да се обърнем, ще си създадем обект от #тип този клас и дирекно ще достъпим методите му.
# 4. За всеки атрибут на клас е удачно да си правим #конструктор, когато това е необходимо, за да бъде кодът ни
#по-функционален.
# 5. Касовата бележка се принтира ред по ред. Може да е смешно,
#но аз си мислех, че трябва да се прави някаква магия.
# 6. Колкото повече класове и методи дефинираме, стига да има
#смисъл в това, толкова по-разумно.
# 7. Научих как се прави подравняване при принтиране. В интерес #на истината не много добре, но поне разбрах общата идея. Ако
#има някои функции в ruby, аналогични на | %-40s %5s | %8s |\n ,
#например, ще се радвам да ни ги покажете, макар че аз поне не
#намерих такива, освен rjust, която май върши работа само до
#някъде.
# 8. С *neshto.first може да се достъпва елемент на масив.

История (1 версия и 0 коментара)

Ивана обнови решението на 14.11.2011 15:20 (преди над 12 години)

+RETROSPECTORY = 'https://github.com/Ivb1990/ruby-retrospective-1/tree/master/solutions'
+
+#Задача 1:
+# 1. Собственият клас се достъпва със self и не е удачно да се
+#извиква по друг начин.
+# 2. Циклите не са красиво и удобно средство. В ruby има готов
+#метод за всичко.
+# 3. Методът map може да спести обхождане на елементи.
+# 4. Научих как работи inject и, че не се ползва само за
+#сумиране, умножение и т.н. елементи на масив.
+# 5. За добавяне елемент в хеш е достатъчно hash[:a] = 30 , #примерно.
+# 6. Последният елемент от блок е връщаният резултат, ако има #такъв.
+# 7. Методи могат да се прилагат и в един и същ израз върху вече
+#приложени други такива.
+#
+#
+#Задача 2:
+# 1. С map лесно може да се обработва string, подаден като #вход.
+# 2. Как от подаден string можем да извлечем елементи от #съдържанието му и да ги "присвоим" на атрибутите на даден клас.
+# 3. case ... when.... when.... when.... не е влагане.
+# 4. Научих за какво служи lines.
+# 5. Нещата не са толкова прости, колкото изглеждат. Трябва да
+#се дефинира всяка "подробност". В първото домашно пропуснах
+#това при проверката за criteria.
+# 6. Един конструктор е достатъчен. Не е необходимо да #инициализираме отделно всеки елемент от входа.
+# 7. За да може да се каже, че даден код е добър (на ruby
+#специално), трябва съдържанието му да е максимално близо до
+#естествения език, т.е. всичко да се дефинира така, че само
+#да обяснява себе си, без необходимост този, който го чете
+#да мисли за какво става дума.
+#
+#Задача 3:
+#
+# 1. Когато правим конструктор на клас, много по-удобно е #неговите параметри да се задават като стойности на атрибути,
+#върху които след това да извършим определени действия,
+#отколкото да извършим тези действия директно в конструктора.
+# 2. Вместо да съставяме малко класове със сложни методи, по-#удачно е да разбием класовете, съответно да им дефинираме
+#по-прости методи. Така кодът става по-разбираем и по-лесен за
+#съставяне и употреба.
+# 3. Вместо хешове и масиви, по-удобно и добро е да се
+#ползват атрибути на клас. Така, вместо на търсим към кой #елемент на хеша/масива да се обърнем, ще си създадем обект от #тип този клас и дирекно ще достъпим методите му.
+# 4. За всеки атрибут на клас е удачно да си правим #конструктор, когато това е необходимо, за да бъде кодът ни
+#по-функционален.
+# 5. Касовата бележка се принтира ред по ред. Може да е смешно,
+#но аз си мислех, че трябва да се прави някаква магия.
+# 6. Колкото повече класове и методи дефинираме, стига да има
+#смисъл в това, толкова по-разумно.
+# 7. Научих как се прави подравняване при принтиране. В интерес #на истината не много добре, но поне разбрах общата идея. Ако
+#има някои функции в ruby, аналогични на | %-40s %5s | %8s |\n ,
+#например, ще се радвам да ни ги покажете, макар че аз поне не
+#намерих такива, освен rjust, която май върши работа само до
+#някъде.
+# 8. С *neshto.first може да се достъпва елемент на масив.