Задача 1: Въпроси

  1. Тук задавайте въпроси по първата задача.

    Скоро ще публикуваме подробности за това как се изпращат задачите и на как ще ги тестваме. За тези от вас, на които това им говори нещо – положението е идентично с курса по Python.

    Публикувано преди повече от 4 години
  2. Нещо се скарахме с unit test-а :)

    Става въпрос за следната проверка:

    @collection.find(:song, :tags => [:jazz, :piano!, :saxophone!]) do |song|
         assert_equal "Miles Davis", song.artist
    end

    Доколкото разбирам, това трябва да намери всички песни, които имат таг :jazz, нямат таг :piano и нямат таг :saxophone и всички те трябва да са на Miles Davis. Но не отговарят ли на условията и долните?

    Autumn Leaves;          Bill Evans;         Jazz;               popular
    Waltz for Debbie;       Bill Evans;         Jazz;
    'Round Midnight;        Thelonious Monk;    Jazz, Bebop;

    Или не съм разбрал условието както трябва?

    Публикувано преди повече от 4 години
  3. Евънс и Монк са двамата най-брутални джаз пианисти. А ние търсим песни без пиано.

    Тъй де, очевидно съм изтървал нещо в теста. Ъпдейт.

    Публикувано преди повече от 4 години
  4. Аз имам въпрос.
    Ако имаме имена на каквото и да е, и те се различават само с някакви интервали, това различни имена ли са?
    Примерно имаме тези 2 реда:

    My Favourite Things;    John (тук трябва да има много интервали, но като публикувам, не излизат) Coltrane;      Jazz, Bebop;        popular, cover
    Greensleves;            John Coltrane;      Jazz, Bebop;        popular, cover

    и 2-те ли са John Coltrane или са различни имена?
    А също така, ако имаме дупликати — т.е. ако имената на изпълнителите и на песента съвпадат, при find извеждаме и 2-та?

    Публикувано преди повече от 4 години
  5. Здравейте,
    Поздрави за форума :)

    И аз имам въпрос, който до някаква степен е свързан с предходния.
    В какъв формат ще е стрингът със съдържанието на файла? Ще има ли тези интервали(вертикалната табулация), ние ли трябва да се погрижим да ги махнем? Прегледах unit теста и видях, че там са запазени интервалите както и ‘\n’ в края на всеки запис. Накратко трябва и да се грижим за правилния формат на входа?

    Поздрави!

    Публикувано преди повече от 4 години
  6. # Намира всички класически песни с по-дълги имена:
    collection.find :song, :filter => lambda { |song| song.length > 15 }, :tags => :classical

    Горе се в lambda-та трябва да пише song.name.length, предполагам? И още няколко бързи въпроса :)

    Може ли да има два абсолютно еднавкви реда в стринга, който се дава на конструктура на Collection и ако да как трябва да се третират, да сложим две еднакви песни или само една?

    Може ли да има жанрове от тип: Punk-Rock, Sk8_Punk; или пък Punk rock, Rock and Roll; примерно?

    Публикувано преди повече от 4 години
  7. Не се притеснявайте, като тестови данни не може да има нищо повече от това, което сме показали. Няма да има:

    • Един артист записан по различни начини
    • Стилове, които на са валидни идентификатори
    • Дубликати на двойката (песен, артист)
    • Никакви вертикални табулации, нормални табулации и прочее странности

    Единственото, което има значение и си личи от теста, е че преди и след имената искам да мога да слагам колкото си искам интервали, но това вероятно се досещате. Ако се справяте да изпарсите примера, който съм дал, няма да имате проблеми с този, с който ще тествате.

    Иначе, да, song.name.length трябва да пише.

    Публикувано преди повече от 4 години
  8. Здравейте!

    Искам да попитам докога точно е крайният срок. Неделя вечерта до 12 или понеделник вечерта до 12? Кое се счита за 27? :)

    Поздрави!

    Публикувано преди повече от 4 години
  9. В страницата за изпращане на решение http://fmi.rails-bg.net/tasks/1/solution пише “Краен срок: 13:00, 27 октомври 2008” :-)

    Публикувано преди повече от 4 години
  10. Мерси много, убягнало ми е от погледа :)

    Публикувано преди повече от 4 години
  11. А направих часът 13:00 само за да избегна този въпрос, уви… :)

    Публикувано преди повече от 4 години
  12. Имам един въпрос.
    Има ли начин да достъпя метод на даден обект по символ или стринг, съвпадащ с името на метода? Нещо от сорта на:

    song.getmethod(:name)
    => "Goldberg Variatons"

    Публикувано преди повече от 4 години
  13. Има начин:

    song.send(:name)

    И още нещо полезно:

    :name == "name".to_sym # В случай, че разполагаш с низ

    Публикувано преди повече от 4 години
  14. Има много начини да се достъпи метод на даден обект по символ или стринг, един от многоto е и комбинация с eval() :)

    Публикувано преди повече от 4 години
  15. Прибягвайте до eval() само ако няма друг вариант, не е добра практика :)

    Публикувано преди повече от 4 години
  16. Текстов eval се ползва само в краен случай. eval("song.#{name}") е грешно отвсякъде. song.send(name), където name може да е както низ, така и символ.

    Публикувано преди повече от 4 години
  17. Има ли значение какво ще върнем, ако се извика с блок find?

    Публикувано преди повече от 4 години
  18. Щом не е упоменато, значи вероятно не ни интересува :)

    Публикувано преди повече от 4 години
  19. Факт.

    Публикувано преди повече от 4 години

Нов отговор

Трябва да сте вътре за да отговаряте.