Ruby实例变量

Ruby实例变量,ruby,Ruby,当我尝试访问 class Polygon attr_accessor :sides @sides = 10 end 我得零分。如何访问侧面? 这里怎么了?您需要: puts Polygon.new.sides # => nil 通过在类级别分配给@sides,您创建了一个类实例变量,而不是使用new创建的对象的实例变量 在本例中,您有一个给定多边形的属性,但如果它实际上是类的属性,如author或copyright或其他,那么您可以通过@which语法引用它,如果您在使用def

当我尝试访问

class Polygon
  attr_accessor :sides
  @sides = 10
end
我得零分。如何访问侧面? 这里怎么了?

您需要:

puts Polygon.new.sides # => nil
通过在类级别分配给@sides,您创建了一个类实例变量,而不是使用new创建的对象的实例变量

在本例中,您有一个给定多边形的属性,但如果它实际上是类的属性,如author或copyright或其他,那么您可以通过@which语法引用它,如果您在使用def self.something创建的类方法中。。。结束。

您需要:

puts Polygon.new.sides # => nil
通过在类级别分配给@sides,您创建了一个类实例变量,而不是使用new创建的对象的实例变量


在本例中,您有一个给定多边形的属性,但如果它实际上是类的属性,如author或copyright或其他,那么您可以通过@which语法引用它,如果您在使用def self.something创建的类方法中。。。结束。

由于ruby类定义只是可执行代码,当您在类定义的上下文中说@sides=10时,您定义的是多边形而不是多边形的实例:

def initialize
  @sides = 10
end
您可能需要从初始值设定项设置多边形实例的边数:

class Polygon
  attr_accessor :sides
  @sides = 10
end

Polygon.instance_variables
# => [:@sides]

由于ruby类定义只是可执行代码,当您在类定义的上下文中说@sides=10时,您是在多边形上定义的,而不是多边形的实例:

def initialize
  @sides = 10
end
您可能需要从初始值设定项设置多边形实例的边数:

class Polygon
  attr_accessor :sides
  @sides = 10
end

Polygon.instance_variables
# => [:@sides]

简言之,attr_访问器定义了两种方法

class Polygon
  attr_accessor :sides

  def initialize(sides)
    @sides = sides
  end
end 

Polygon.new(10).sides
# => 10
要获得这里提到的边的值,需要在中初始化它们

def sides
end

def sides=
end

简言之,attr_访问器定义了两种方法

class Polygon
  attr_accessor :sides

  def initialize(sides)
    @sides = sides
  end
end 

Polygon.new(10).sides
# => 10
要获得这里提到的边的值,需要在中初始化它们

def sides
end

def sides=
end

这个问题甚至使用了与您相同的示例代码,答案为。

这个问题甚至使用了与您相同的示例代码,答案为。

嗯,向下投票。嗯,我给你+1。范甘迪举了一个例子,展示了他所做的尝试,期望的结果是显而易见的question@DigitalRoss我是个新手,学Ruby已经有几天了。似乎很少有人认为stackoverflow不是新手可以问的问题。谢谢大家为ruby新手回答这个foobar问题:这是一个非常好的问题,继续问下去-嗯,反对票。嗯,我给你+1。范甘迪举了一个例子,展示了他所做的尝试,期望的结果是显而易见的question@DigitalRoss我是个新手,学Ruby已经有几天了。似乎很少有人认为stackoverflow不是新手可以问的问题。谢谢大家为ruby新手回答这个foobar问题:这是一个非常好的问题,继续问下去-