为了使制定者和Dessert
类消气,我做了下面的代码:'名':错误的参数数目(1 0)(引发ArgumentError)
class Dessert
def initialize(name,calories)
@name=name
@calories=calories
end
def name
@name
end
def name=(names)
@name=names
end
def calories
@calories
end
def calories=(calory)
@calories=calory
end
end
d=Dessert.new("Salad",1200)
puts d.name("Khoresht")
puts d.calories(1600)
puts d.name()
puts d.calories()
setter和getter必须有同名,编译器通过他们的签名来识别它们。但在这里,我面对错误:
`name': wrong number of arguments (1 for 0) (ArgumentError)
为方法名称(setter)。
为什么发生?
带结构的版本有差异:'Dessert.new'中的参数是可选的,有一个默认的nil。 – knut
@knut:是的,你说得对。我忘了那个区别。 – spickermann