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