Шесто предизвикателство

  1. Здравейте, моята логика ли е грешна или в този код robot { move move mark move mark } трябва да има точки и запетай между командите? Поздрави :)

    Да, малко точки и запетаи няма да му дойдат зле. Благодаря! :)

  2. Ако в метода move използвам аксесор, за да достъпя и инкрементирам(използвам '+=') текущата позиция, защо получавам изключение

    NoMethodError: undefined method `+' for nil:NilClass ... in move
    

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

  3. Получавам грешка "undefined local variable or method `move' for #<RSpec::Core::ExampleGroup::Nested_1:0x29f49d8 @example=nil>". Явно не мога да съобразя метод на обектите от кой клас да бъдат move и mark. В момента са методи на обекта от помощния клас. Може ли помощ по този въпрос? :worried: Качвам си и аз кода.

  4. Аз не разбрах "дефакто глобалните променливи". Ако в помощния си клас имам инстанционна променлива, която пази резултата, проблем ли е?

    Също проблем ли е да подам блока в сигнатурата на функцията robot? Тоест така нарушавам ли условието да приема един аргумент?

    Качил съм кода.

  5. Аз не разбрах "дефакто глобалните променливи". Ако в помощния си клас имам инстанционна променлива, която пази резултата, проблем ли е?

    Не, не е проблем да има каквото и да било в помощния клас. За мен „дефакто глобални променливи“ значи например следното (foo и bar са дефинирани извън клас или модул):

    foo = []
    
    def bar
      foo << 42
      # etc.
    end
    

    Също проблем ли е да подам блока в сигнатурата на функцията robot? Тоест така нарушавам ли условието да приема един аргумент?

    Не, не нарушаваш условието за един аргумент по никакъв начин. Може би просто условието не е било написано много добре. :-)

Трябва да сте влезли в системата, за да може да отговаряте на теми.