Ruby:迭代计算

时间:2015-05-04 06:15:31

标签: ruby loops

假设我已计算出类似于体重指数的东西非常简单,看起来像这样:

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 }

但它不起作用。

2 个答案:

答案 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]}"}