更新 rails 中的 class 个变量
updating class variables in rails
我有一个名为 @@customers 的 class 变量,我想通过一种方法不断更新它。
我在模型的顶部初始化变量(作为一个空数组)。然后在调用方法 update_customers 时更新它:
class Customer
@@customers = []
def update_customers(new_customer)
@@customers << new_customer
end
end
我担心@@customers 被重新初始化为 [] 并丢失数据。这样的重新初始化会发生吗?什么时候发生?
没有;当从新的 Customer
对象调用 update_customers
时,@@customers
不会重新初始化为 []
。这就是 class 变量的工作原理。
有关 class 变量的深入处理,请参阅 http://rubymonk.com/learning/books/4-ruby-primer-ascent/chapters/45-more-classes/lessons/113-class-variables。
正如那里提到的:
There aren't very many cases that you would need to use class variables.`
class Customer
@@customers = []
def self.update_customers(new_customer)
@@customers << new_customer
end
end
Class 变量是静态的。它们只被初始化一次。
如果您将 update_customers 声明为 class 方法就好了
你可以像
这样调用方法
cust1 = Customer.new
Customer.update_customers cust1
我有一个名为 @@customers 的 class 变量,我想通过一种方法不断更新它。
我在模型的顶部初始化变量(作为一个空数组)。然后在调用方法 update_customers 时更新它:
class Customer
@@customers = []
def update_customers(new_customer)
@@customers << new_customer
end
end
我担心@@customers 被重新初始化为 [] 并丢失数据。这样的重新初始化会发生吗?什么时候发生?
没有;当从新的 Customer
对象调用 update_customers
时,@@customers
不会重新初始化为 []
。这就是 class 变量的工作原理。
有关 class 变量的深入处理,请参阅 http://rubymonk.com/learning/books/4-ruby-primer-ascent/chapters/45-more-classes/lessons/113-class-variables。
正如那里提到的:
There aren't very many cases that you would need to use class variables.`
class Customer
@@customers = []
def self.update_customers(new_customer)
@@customers << new_customer
end
end
Class 变量是静态的。它们只被初始化一次。 如果您将 update_customers 声明为 class 方法就好了 你可以像
这样调用方法cust1 = Customer.new
Customer.update_customers cust1