【发布时间】:2018-04-08 00:13:13
【问题描述】:
好的,所以我已经阅读了 Ruby 中的类变量、类实例变量和实例变量。我发现 Phrogz 的 this explanation 很有启发性。
现在我正在尝试向我的类中添加一个变量,该变量可以通过我的类中的多个方法访问,但它不会在类的多个实例之间共享:
Class QuizSession < ApplicationRecord
attr_accessor :index_changed
def initialize
@index_changed = false
end
def index_changed?
@index_changed
end
def set_index_changed!
@index_changed = false
end
def method_a
do sth.
...
@index_changed = true
end
end
我想要的是这样的:(就像Phrogz example中的@my_things)
session_a = QuizSession.new
session_b = QuizSession.new
session_a.method_a
p session_a.index_changed? #=> true
p session_b.index_changed? #=> false
我的假设是否正确,目前我正在定义 4 个不同的 @index_changed 变量,每个变量都在各自方法的范围内,但对类的其余部分不可见?
但是,如果我在方法之外将@index_changed 变量声明为类实例变量,它不也会在类实例之间共享吗?
【问题讨论】:
标签: ruby variables scope class-instance-variables