我有一个类OrangeTree
和一个函数OneYearPasses
。该功能应该使树的年龄和高度增加一。
class OrangeTree
def initialize(height, age)
@height = height
@age = age
end
def age
@age
end
def height
@height
end
def OrangeHeight
puts "This Orange tree is #{height} unit tall"
end
def OneYearPasses
age =+ 1
height =+ 1
puts "This Orange tree is now #{age} years old and its height is now #{height}"
end
end
FirstOrangeTree = OrangeTree.new(0,0)
当我尝试增加它们时,它不会保存新值:
orangeOne = FirstOrangeTree.OneYearPasses
# >> This Orange tree is now 1 years old and its height is now 1
orangeOne = FirstOrangeTree.OneYearPasses
# >> This Orange tree is now 1 years old and its height is now 1
我想它只会返回一个新副本。
我在做什么错了?
答案 0 :(得分:1)
那里有两个问题。首先是增加应该使用的任何内容:
var = var + 1
可能会缩短为
var += 1
不
var =+ 1
后者简称为
var = +1
另一个问题是,您正在弄乱getter,实例变量和[代码中不存在的] setter。您的age
方法读取变量的值。要设置它,应该设置实例变量的值:
@age += 1
或声明一个setter:
def age=(value)
@age = value
end
并按如下所示使用它:
self.age += 1
self
是强制性的,因为否则,ruby解释器将创建一个局部变量,而不是调用setter方法。