未能将实例变量的值从同一类(Ruby)中传递给另一个实例变量
这是我的密码未能将实例变量的值从同一类(Ruby)中传递给另一个实例变量,ruby,methods,instance-variables,Ruby,Methods,Instance Variables,这是我的密码 class Dog attr_accessor :name attr_reader :breed, :age def initialize(name, breed, age) @name = name @breed = breed @age = age @distance_in_kms = [] end def walk(distance_in_kms) @
class Dog
attr_accessor :name
attr_reader :breed, :age
def initialize(name, breed, age)
@name = name
@breed = breed
@age = age
@distance_in_kms = []
end
def walk(distance_in_kms)
@distance_in_kms << {distance: distance_in_kms}
end
def walked_distance
@walked_distance = @distance_in_kms.inject(0) {|sum, hash| sum + hash[:distance]}
end
def display_walks
puts "#{@name} has had #{@distance_in_kms.length} walks and walked #{@walked_distance} kms today:"
@distance_in_kms.each do |each_walk|
puts "#{each_walk[:distance]} km"
end
end
#overriding to_s to print a meaningful representation of a class
def to_s
return "Dog: breed-#{@breed} name-#{@name}"
end
end
doggo = Dog.new("Roy", "Labrador", 8)
doggo.walk(3)
doggo.walk(5)
doggo.walk(1)
puts doggo.name = "Dang"
puts doggo.breed
doggo.display_walks
公里数前的预期值应为9,即一天内每次步行的总和。显然,我用walked\u distance
方法做了一些错误。我试图将数组@distance\u(单位:km
的值传递到@walked\u distance
中,但它不起作用,返回值为零。但是如何解决问题并获得预期结果?谢谢
但是你永远不会调用代码来计算行走距离。在添加新步行时更新它,或者在此处计算总距离(例如,通过调用步行距离
)
但是你永远不会调用代码来计算行走距离。添加新步行时更新它或在此处计算总距离(例如,通过调用
步行距离
)您必须调用该方法来更新@walked\u距离
,例如:
def display_walks
walked_distance # <------ This line
puts "#{@name} has had #{@distance_in_kms.length} walks and walked #{@walked_distance} kms today:"
@distance_in_kms.each do |each_walk|
puts "#{each_walk[:distance]} km"
end
end
离题,只是一个小的变化来评估:
@walked_distance = @distance_in_kms.values.sum
您必须调用该方法来更新行走距离,例如:
def display_walks
walked_distance # <------ This line
puts "#{@name} has had #{@distance_in_kms.length} walks and walked #{@walked_distance} kms today:"
@distance_in_kms.each do |each_walk|
puts "#{each_walk[:distance]} km"
end
end
离题,只是一个小的变化来评估:
@walked_distance = @distance_in_kms.values.sum
一开始我也可以这么做:
类狗
属性存取器:名称
属性读取器:品种、年龄
def初始化(姓名、品种、年龄)
@name=name
@品种
@年龄=年龄
@距离(单位:公里)=[]
@步行距离=[]
结束
def步行(距离单位:公里)
@距离(单位:公里)一开始我也可以做到这一点:
类狗
属性存取器:名称
属性读取器:品种、年龄
def初始化(姓名、品种、年龄)
@name=name
@品种
@年龄=年龄
@距离(单位:公里)=[]
@步行距离=[]
结束
def步行(距离单位:公里)
@距离(单位:km)你的距离散列似乎没有键:amount
是的,我把它改成了:distance
,仍然不起作用将{@walked\u distance}
字符串改成{walked\u distance}
。方法中的实例变量从未在代码中调用过。啊,它起作用了!谢谢!您的距离散列似乎没有键:amount
是的,我将其更改为:distance
,仍然不起作用将{@walked\u distance}
字符串更改为{walked\u distance}
。方法中的实例变量从未在代码中调用过。啊,它起作用了!谢谢!那太棒了!非常感谢~~~真是太棒了!非常感谢~~~
@walked_distance = @distance_in_kms.values.sum