class Var
@instance_variable = "instance variable"
@@class_instance_variable = "class instance variable"
def self.class_method
puts @instance_variable
puts @@class_instance_variable
end
def instance_method
puts @instance_variable
puts @@class_instance_variable
end
end
类方法可以访问类实例和实例变量。但实例方法只能访问类实例变量。 @instance_variable
是内部实例方法。这背后的逻辑解释是什么?Ruby中的类实例变量和实例变量
Var.class_method #=> "instance variable" "class instance variable"
Var.new.instance_method #=> "class instance variable" nil
这是正确的实例变量不会被子类继承吗?这是为什么?
_Sidenote_:'nil'在“Var.new.instance_method”执行的结果很混乱,因为它a)应该出现在“类实例变量”之前,并且b)在“puts”中根本不会出现。 – mudasobwa
它如下。 (你必须用@替换我的(@),因为&符号开始SO用户名,并且SO只允许每个注释一个)。 (@)(@)class_variable = 1; (@)class_instance_variable = 2; def my_method; (@)instance_variable = 3;结束;结束' –
@FrederickCheung我不同意这是重复的。 OP实际上询问“'@ instance_variable”是否在实例方法内部。这背后的逻辑解释是什么?“这是由于OP误解实例变量范围概念的缘故。 – mudasobwa