0

我有一颗宝石,其中一个类是类似的:

class Test
    TESTING = {
        :sth1 => 'foo',
        :sth2 => 'bar'
    }

    # p Test.new.show 
    # should print 'cat'
    def show
        p TESTING[:sth3]
    end 

end

我在其他文件中扩展

# in other file
class Test 
    TESTING = {
        :sth3 => 'cat'
    }       
end

但是我需要在第一个文件中使用 :sth3 ,因为代码的第一部分代表。提前谢谢。

4

1 回答 1

2

您没有扩展它,而是用新的哈希替换了哈希。以下是解决方法:

# in the other file
Test::TESTING[:sth3] = 'cat'

我建议使用延迟初始化的方法,以便您可以按任意顺序排列分配:

class Test
  def self.testing
    @testing ||= {}
  end

  testing[:sth1] = 'foo'
  testing[:sth2] = 'bar'
end

# in the other file
Test.testing[:sth3] = 'cat'
于 2012-07-03T14:52:36.227 回答