неопределенный метод even_or_odd для main: Object (NoMethodError) - PullRequest
0 голосов
/ 07 марта 2019

Прошу прощения заранее. Я новичок в программировании. Я получаю ошибку

неопределенный метод even_or_odd для main: Object (NoMethodError)

при попытке запустить следующий код в rails. Любая помощь приветствуется.

class Test
  attr_accessor :number

  def initialize(number)
    self.number = number
  end

  def even_or_odd(number)
    self.number = number

    if number % 2 == 0
      puts "Even"


    else 
      puts "Odd"
    end
  end
end

Test.assert_equals(even_or_odd(2), "Even")

1 Ответ

2 голосов
/ 07 марта 2019

Вы определили все методы в этом классе как методы экземпляра, которые должны вызываться для экземпляра класса (например, Test.find (4)), а не для самого класса (просто Test). Так что-то вроде этого должно работать:

Test.new(4).even_or_odd(4) => true

Однако ... то, как мы изложили метод с аргументом, означает, что мы проверяем, является ли аргумент четным / нечетным, а не номером тестового объекта. Итак:

Test.new(4).even_or_odd(5)

Сбросит атрибут 'number' теста на 5, а затем проверит этот номер. Я предполагаю, что вы хотите проверить атрибут номера экземпляра Test, а не аргумент, который вы предоставляете, поэтому попробуйте:

class Test
  def initialize(number)
    @number = number
  end

  def even_or_odd
    if @number % 2 == 0
      puts "Even"
    else 
      puts "Odd"
    end
  end
end

Это позволит вам выполнить:

Test.new(4).even_or_odd

Я удалил бит attr: accessor, чтобы сделать его более понятным, но не стесняйтесь включать его, если вам не нравится каждый раз вызывать @number.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...