我有一个名为@@ customers的类变量,我想通过一种方法不断更新。
我在模型顶部初始化变量(作为空数组)。然后在调用方法update_customers时更新它:
class Customer
@@customers = []
def update_customers(new_customer)
@@customers << new_customer
end
end
我担心@@客户被重新初始化为[]并丢失数据。这样的重新初始化会发生吗?什么时候会发生?
答案 0 :(得分:1)
都能跟得上;从新@@customers
对象调用[]
时,update_customers
不会重新初始化为Customer
。这就是类变量的工作原理。
有关类变量的深入处理,请参阅http://rubymonk.com/learning/books/4-ruby-primer-ascent/chapters/45-more-classes/lessons/113-class-variables。
如上所述:
您需要使用类变量的情况并不多。
答案 1 :(得分:0)
class Customer
@@customers = []
def self.update_customers(new_customer)
@@customers << new_customer
end
end
类变量是静态的。它们只被初始化一次。 如果将update_customers声明为类方法,那将会很好 你可以像
一样调用这个方法cust1 = Customer.new
Customer.update_customers cust1