在ruby

时间:2017-07-13 08:04:01

标签: ruby

我已经编写了这段代码来增加实例变量,但它不起作用并说:

未定义的方法`+'代表nil:NilClass(NoMethodError)

class Ali
  @var1 = 2
  def initialize
  end

  def getvar1
    @var1 = @var1 + 2
    return @var1
  end
end
ali = Ali.new
puts ali.getvar1()

2 个答案:

答案 0 :(得分:2)

将初始值@var1 = 2放入初始值设定项中。这就是初始化器的用途!

答案 1 :(得分:2)

您可以执行以下操作来实现您的目标

class Ali
  def initialize
    @var1 = 2
  end

  def getvar1
    @var1 = @var1 + 2
  end
end

ali = Ali.new
ali.getvar1
=> 4
ali.getvar1
=> 6

请注意,在ruby中@var是一个实例变量,只能通过实例访问。 @@var是一个类变量,可以在类中的任何位置访问。

还有一件事,方法的最后一个陈述是默认的返回值。仅当最后一个语句不是您想要的值作为返回值时才使用显式return