首页 > 解决方案 > “每个...做”和“做”有什么区别

问题描述

只是在做一些练习题,但我很困惑“做什么”到底是做什么的

self.length.times do |i|

这段代码和

self.each do |i|

标签: ruby

解决方案


do ... endRuby 中的代码块(或大部分等效{ ... }块)是一个重要的语言特性,它允许您将某些行为(即某些代码块)传递给方法。如果您了解 Javascript,您可以将 Ruby 的块有点像一个匿名函数,作为第一个近似值。

现在,当将块传递给each方法时,它将为枚举中的每个元素调用一次块,将当前元素作为块的第一个参数传递。

Integer#times方法也需要一个块。它将n使用数字作为参数调用块时间,从 0 计数直到n - 1(使用n您调用该方法的任何数字times。因此,块将被准确地调用n次数。

由于块是无处不在的 Ruby 的一个组成部分,因此您应该尝试很好地了解它们的工作原理。如果您搜索“红宝石块”,您会在 Google 上找到很多指南和帖子。


推荐阅读