首页 文章

无法在类中使用全局变量 - SystemStackError:堆栈级别太深RUBY

提问于
浏览
0

我的守则

def property_values_list
  property_values = {"ceremonial"=>249, "party"=>250, "wedding"=>251, "casual"=>252} 
end

$property_values = property_values_list()

class Design
  attr_reader  :occasion_ids

  def occasion_ids=(property_name)
    self.occasion_ids = []
    self.occasion_ids << $property_values[property_name]
  end
end

d = Design.new
d.occasion_ids = 'party'

错误

SystemStackError:堆栈级别太深了.rvm / rubies / ruby-1.9.3-p545 / lib / ruby / 1.9.1 / irb / workspace.rb:80也许是IRB错误!

1 回答

  • 1

    这不是一个错误,它只是一个无限递归,因为你调用从方法本身分配方法 occasion_ids=

    def occasion_ids=(property_name)
       self.occasion_ids = []
    

    分配给实例变量:

    def occasion_ids=(property_name)
       @occasion_ids = []
    

相关问题