假设我已计算出类似于体重指数的东西非常简单,看起来像这样:
def body_mass_index(weight, height)
body_mass_index = weight / (height * height)
if body_mass_index < 18.5
puts "underweight"
elsif body_mass_index >= 18.5 && body_mass_index < 25.0
puts "normal"
elsif body_mass_index >= 25.0 && body_mass_index < 30.0
puts "overweight"
else
puts "obese"
end
end
现在说我想迭代一个高度和权重列表,可能是以数组的形式。如何在一些代码中结合这两个东西?我想说的是:
[height, weight], [height, weight], height, weight].each do { |bmi| height, weight }
但它不起作用。
答案 0 :(得分:1)
对于ruby iterate,有两种样式:
[]
它们是相同的,你可以使用任何人。
请试一试:
[....].each do |i|
end
[...].each { |i| ...}
答案 1 :(得分:1)
现在您已经解决了语法问题,原文中缺少的部分:
[[height, weight], [height, weight], [height, weight]].each do { |bmi| height, weight }
是否它没有将高度和重量值传递给body_mass_index方法。
liuzxc解决方案的这一部分
.each {|bmi| body_mass_index(bmi[1], bmi[0]) }
将每个[height,weight]数组索引为1(bmi [1])和0(bmi [0])并将值传递给body_mass_index方法
要了解差异,您可以尝试运行它,并将上面引用的liuzxc解决方案部分替换为
.each {|bmi| puts "weight is #{bmi[1]} height is #{bmi[0]}"}