Ruby 无法访问类属性

Ruby 无法访问类属性,ruby,Ruby,我做到了: 我希望看到“红色”,但它表示给出的参数数量错误 如何查看tiger.color的值?如果颜色是初始化方法的一部分,是否可以只查看颜色而不查看其他属性?因为它是正确的:您的color方法使用一个参数。您需要定义颜色,不带参数。所以 class Animal attr_accessor :color def color(color) @color = color # TODO: what should this method return? end tig

我做到了:

我希望看到“红色”,但它表示给出的参数数量错误


如何查看tiger.color的值?如果颜色是初始化方法的一部分,是否可以只查看颜色而不查看其他属性?

因为它是正确的:您的
color
方法使用一个参数。您需要定义
颜色
,不带参数。所以

class Animal
  attr_accessor :color

  def color(color)
    @color = color
    # TODO: what should this method return?
  end

tiger =  Animal.new
tiger.color("red")
tiger.color

后者是相同的,但更简洁

最后一件事:您定义了setter方法,这没关系,但术语是错误的(或者至少是误导性的)。我建议

attr_reader :color
像这样称呼他们

def color=(color)

因为它是正确的:您的
color
方法使用一个参数。您需要定义
颜色
,不带参数。所以

class Animal
  attr_accessor :color

  def color(color)
    @color = color
    # TODO: what should this method return?
  end

tiger =  Animal.new
tiger.color("red")
tiger.color

后者是相同的,但更简洁

最后一件事:您定义了setter方法,这没关系,但术语是错误的(或者至少是误导性的)。我建议

attr_reader :color
像这样称呼他们

def color=(color)
为您设置读写器方法<代码>属性访问器:颜色相当于

obj.color = color
因此,无需编写任何方法来获取基本属性方法

def color
  @color
end

def color=(value)
  @color = value
end
请注意,setter是
thing=
,称为
obj.thing=value
,而不是
obj.thing(value)
obj.thing=value
实际上是
object.thing=(value)

最后,如果要将这些参数传递到
new
中,您必须自己编写该部分,方法是定义
initialize
以获取参数并设置实例变量

tiger = Animal.new
tiger.color=(:red)
puts tiger.color    # red

tiger.color = :blue
puts tiger.color    # blue
为您设置读写器方法<代码>属性访问器:颜色相当于

obj.color = color
因此,无需编写任何方法来获取基本属性方法

def color
  @color
end

def color=(value)
  @color = value
end
请注意,setter是
thing=
,称为
obj.thing=value
,而不是
obj.thing(value)
obj.thing=value
实际上是
object.thing=(value)

最后,如果要将这些参数传递到
new
中,您必须自己编写该部分,方法是定义
initialize
以获取参数并设置实例变量

tiger = Animal.new
tiger.color=(:red)
puts tiger.color    # red

tiger.color = :blue
puts tiger.color    # blue