class Polygon
  attr_accessor :sides
  @sides = 10
end

当我试图接近
puts Polygon.new.sides # => nil

我得零分如何进入侧面?
这里怎么了?

最佳答案

由于ruby类定义只是可执行代码,所以当您在类定义的上下文中说@sides = 10时,您是在Polygon上定义它的(而不是Polygon的实例):

class Polygon
  attr_accessor :sides
  @sides = 10
end

Polygon.instance_variables
# => [:@sides]

您可能希望从初始值设定项设置多边形实例上的边数:
class Polygon
  attr_accessor :sides

  def initialize(sides)
    @sides = sides
  end
end

Polygon.new(10).sides
# => 10

10-08 06:01