Ruby中的’upto’方法

前端之家收集整理的这篇文章主要介绍了Ruby中的’upto’方法前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在学习 Ruby,并且已经有一些关于我正在学习的书中的upto方法的讨论.我糊涂了.它到底是做什么用的?

例:

  1. grades = [88,99,73,56,87,64]
  2. sum = 0
  3. 0.upto(grades.length - 1) do |loop_index|
  4. sum += grades[loop_index]
  5. end
  6. average = sum/grades.length
  7. puts average

解决方法

我们试试一下解释:

您定义一个数组

  1. grades = [88,64]

并准备一个变量来存储总和:

  1. sum = 0

grades.length是6(数组中有6个元素),(grades.length – 1)是5.

使用0.upto(5)从0到5循环,loop_index将为0,然后1 …

数组的第一个元素是grade [0](数组中的索引从0开始).
这就是你必须从元素数量中减去1的原因.

  1. 0.upto(grades.length - 1) do |loop_index|

将loop_index的值添加到sum.

  1. sum += grades[loop_index]
  2. end

现在,您循环每个元素并获得数组中所有元素的总和.

你可以计算平均值:

  1. average = sum/grades.length

现在你把结果写到stdout:

  1. puts average

这是一种非类似ruby的语法.类似Ruby,你会这样做:

  1. grades = [88,64]
  2. sum = 0
  3. grades.each do |value|
  4. sum += value
  5. end
  6. average = sum/grades.length
  7. puts average

基于Marc-Andrés的附录评论

您也可以使用inject来避免定义初始总和:

  1. grades = [88,64]
  2. sum = grades.inject do |sum,value|
  3. sum + value
  4. end
  5. average = sum / grades.length
  6. puts average

甚至更短:

  1. grades = [88,64]
  2. average = grades.inject(:+) / grades.length
  3. puts average

猜你在找的Ruby相关文章