红宝石中的if..else语句如何正确使用def?

时间:2019-05-06 10:05:23

标签: ruby-on-rails ruby ruby-on-rails-3 ruby-on-rails-4 ruby-on-rails-5

我开始学习ruby,此刻我了解了如何创建类对象,以及如何编写非常简单的IF..ELSE语句。但是如何用IF..ELSE语句正确编写def? 请提供有关如何正确编写建议的帮助?

   #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 个答案:

答案 0 :(得分:2)

这里的错误是Maths类是由String而不是Integer行中的classob5 = Maths.new("1")发起的。

因此,发生的情况是,在调用numberdata()时,它将值[1](@number)的String1(即{{ 1}}。因此,Integer条件失败,因为它们不相等,并且您可以从if条件中得到结果。

使用else是绝对正确的。该类对象只需要实例化为if..else