Ruby中的’upto’方法
发布时间:2020-12-17 04:32:05 所属栏目:百科 来源:网络整理
导读:我正在学习 Ruby,并且已经有一些关于我正在学习的书中的upto方法的讨论.我糊涂了.它到底是做什么用的? 例: grades = [88,99,73,56,87,64]sum = 00.upto(grades.length - 1) do |loop_index| sum += grades[loop_index]endaverage = sum/grades.lengthputs
我正在学习
Ruby,并且已经有一些关于我正在学习的书中的upto方法的讨论.我糊涂了.它到底是做什么用的?
例: grades = [88,99,73,56,87,64] sum = 0 0.upto(grades.length - 1) do |loop_index| sum += grades[loop_index] end average = sum/grades.length puts average 解决方法
我们试试一下解释:
您定义一个数组 grades = [88,64] 并准备一个变量来存储总和: sum = 0 grades.length是6(数组中有6个元素),(grades.length – 1)是5. 使用0.upto(5)从0到5循环,loop_index将为0,然后1 … 数组的第一个元素是grade [0](数组中的索引从0开始). 0.upto(grades.length - 1) do |loop_index| 将loop_index的值添加到sum. sum += grades[loop_index] end 现在,您循环每个元素并获得数组中所有元素的总和. 你可以计算平均值: average = sum/grades.length 现在你把结果写到stdout: puts average 这是一种非类似ruby的语法.类似Ruby,你会这样做: grades = [88,64] sum = 0 grades.each do |value| sum += value end average = sum/grades.length puts average 基于Marc-Andrés的附录评论: 您也可以使用inject来避免定义初始总和: grades = [88,64] sum = grades.inject do |sum,value| sum + value end average = sum / grades.length puts average 甚至更短: grades = [88,64] average = grades.inject(:+) / grades.length puts average (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |