Ruby字段初始化
在这个小类中,当@sides=10语句被执行时? 此语句与initialize方法的关系如何Ruby字段初始化,ruby,attributes,initialization,Ruby,Attributes,Initialization,在这个小类中,当@sides=10语句被执行时? 此语句与initialize方法的关系如何 class Poligon attr_accessor :sides @sides=10 end 我主要习惯于Java,在Java中,属性的内联初始化是很常见的。我现在正试图理解Ruby的完整初始化过程,但我找不到它。您需要将@sides=10放入一个方法中,并使用当前的类定义 class Poligon attr_accessor :sides def line
class Poligon
attr_accessor :sides
@sides=10
end
我主要习惯于Java,在Java中,属性的内联初始化是很常见的。我现在正试图理解Ruby的完整初始化过程,但我找不到它。您需要将@sides=10放入一个方法中,并使用当前的类定义
class Poligon
attr_accessor :sides
def line
@sides=10
end
end
p = Poligon.new
p.line
puts p.sides
# >> 10
initialize方法是类的构造函数。如果需要,可以在构造函数中初始化实例变量: 但由于@sides被声明为attr_访问器,您可以直接设置/获取它:
p = Poligon.new
p.sides = 10
简短答覆:
statemen@sides=0,在计算中的类表达式时实际执行
它与initialize方法没有任何关系
在编写时,@sides变量是一个类实例变量,即Poligon对象的实例变量。请记住,在Ruby中,类是class类的对象。您必须在方法定义中初始化实例变量,可能在initialize方法中。考虑这个例子:
class Poligon
@class_sides = 'class instance variable'
def initialize
@instance_sides = 'instance variable'
end
end
Poligon.instance_variables
# => [:@class_sides]
Poligon.instance_variable_get(:@class_sides)
# => "class instance variable"
Poligon.new.instance_variables
# => [:@instance_sides]
Poligon.new.instance_variable_get(:@instance_sides)
# => "instance variable"
有关类实例变量以及它们与类变量的关系的更多信息,请阅读。在本博客中找到了有关该主题的信息:没错。否则,将设置Poligon对象的实例变量。
class Poligon
@class_sides = 'class instance variable'
def initialize
@instance_sides = 'instance variable'
end
end
Poligon.instance_variables
# => [:@class_sides]
Poligon.instance_variable_get(:@class_sides)
# => "class instance variable"
Poligon.new.instance_variables
# => [:@instance_sides]
Poligon.new.instance_variable_get(:@instance_sides)
# => "instance variable"