Как правильно использовать def с операторами if..else в ruby? - PullRequest
0 голосов
/ 06 мая 2019

Я начал изучать ruby, на данный момент я понимаю, как создавать объекты класса и как писать очень простое утверждение IF..ELSE. Но как правильно написать def с оператором IF..ELSE? Помогите пожалуйста с советом, как правильно написать?

   #I can write simple statement like this 

number = 1
if number == 1
    number += 1
    puts "the number is #{number}"
else 
    puts "number is more then 2"
end

#But then i want to write something like this 

class Maths
  def initialize(number_id)
    @number = number_id 
  end 

  def numberdata()
    if @number == 1 
      @number +=1
      puts "the number is #@number"
    else 
      puts "number is greater than 3"
    end
  end
end

classob5 = Maths.new("1")
classob5.numberdata()

Я ожидал, что во второй части будет «число равно 2», но фактический результат оказался «число больше 3» Пожалуйста, помогите советом о том, как правильно написать.

1 Ответ

2 голосов
/ 06 мая 2019

Ошибка здесь в том, что класс Maths инициируется с String вместо Integer в строке classob5 = Maths.new("1").

Итак, что происходит, когда numberdata() вызывается, он сравнивает @number со значением "1" (String) с 1, что является Integer. Таким образом, условие if не выполняется, поскольку они не равны, и вы получаете результат из условия else.

Использование if..else абсолютно правильно. Объект класса просто необходимо создать как classob5 = Maths.new(1).

...