`

娃娃鸭学Ruby-34、可枚举的对象

阅读更多
可枚举的对象

Array、Hash、Range及许多其他类都定义了each迭代器
[1,2,3].each{|x| print x}# prints "123"
(1..3).each{|x| print x}  # prints "123"

Ruby的IO类也定义了一个each
File.open(filename) do |f|
f.each{|line| print line}
end

大多数定义了each方法的类都包含Enumerable模块,它定义了许多更特殊的迭代器,
each_with_index
File.open(filename) do |f|
f.each_with_index do |line,number|
   print "#{number}:#{line}"
  end
end

一些常用的Enumerable迭代器包括collect、select 、 reject及inject
squares=[1,2,3].collect{|x| x*x}  #=>[1,4,9]
evens=(1..10).select{|x| x%2==0} #=>[2,4,6,8,10]
  reject和select相反
odds=(1..10).reject{|x| x%2==0} #=>[1,3,5,7,9]

data=[2,5,3,4]
sum=data.inject{|sum,x| sum+x} #=>14 (2+5+3+4)
floatProd=data.inject(1.0){|p,x| p*x} #=>120.0 (1.0*2*5*3*4)
max=data.inject{|m,x|m>x?m:x} #=> 5


2011-4-19 14:34 danny
分享到:
评论
1 楼 helloqidi 2011-09-28  
谢谢,学习了。

相关推荐

    Ruby-Ruby的面向对象的枚举

    总的来说,Ruby的面向对象枚举通过类的形式实现了枚举的创建、遍历和扩展,这使得Ruby的枚举功能既强大又灵活。在处理有限集合的常量时,面向对象的枚举是开发者的一个得力工具。通过这种方式,我们可以更好地组织...

    ruby-debug-ide

    《深入理解Ruby调试工具:ruby-debug-ide》 在Ruby编程世界中,高效的问题排查与代码调试是开发者必备的技能之一。ruby-debug-ide正是这样一个强大的调试接口,它为Ruby开发环境提供了集成的调试支持,使得开发者...

    src-oepkgs/ruby-ruby2ruby

    src-oepkgs/ruby-ruby2rubysrc-oepkgs/ruby-ruby2rubysrc-oepkgs/ruby-ruby2rubysrc-oepkgs/ruby-ruby2rubysrc-oepkgs/ruby-ruby2rubysrc-oepkgs/ruby-ruby2rubysrc-oepkgs/ruby-ruby2rubysrc-oepkgs/ruby-ruby2...

    ruby-1.8.7-p302.tar.gz

    Ruby,一种为简单快捷的面向对象编程(面向对象程序设计)而创的脚本语言,在20世纪90年代由日本人松本行弘(まつもとゆきひろ/Yukihiro Matsumoto)开发,遵守GPL协议和Ruby License。...该版本为ruby-1.8.7-p302

    hw-ruby-intro.zip_SaaS软件工程_hw-ruby-intro_ruby _ruby 中文_saas

    在本压缩包“hw-ruby-intro.zip”中,我们主要关注的是RUBY语言在SaaS(Software as a Service)软件工程中的应用。这个压缩包包含了一份名为“hw-ruby-intro”的作业代码,它是针对高级软件工程课程的,特别强调了...

    ruby-oracle相关的数据库操作的gems包

    标题提到的"ruby-oracle相关的数据库操作的gems包"是指一组用于连接和交互Oracle数据库的Ruby库。描述中指出,这些包主要基于oci8技术,oci8是Oracle公司提供的一个C接口,允许其他编程语言,如Ruby,与Oracle数据库...

    ruby-irb-1.8.7.352-13.el6.x86_64.rpm

    ruby-irb-1.8.7.352-13.el6.x86_64.rpm ruby-irb-1.8.7.352-13.el6.x86_64.rpm

    ruby-2.5.3-x64 下载

    标题中的"ruby-2.5.3-x64"指的是Ruby语言的特定版本,2.5.3,这是一个64位的构建。Ruby的版本迭代频繁,每个新版本通常会包含性能优化、新的特性和错误修复。2.5.3是2018年发布的一个稳定版本,它带来了诸如改进的...

    ruby-2.4.3.tar.gz

    在这个场景中,"ruby-2.4.3.tar.gz"是一个压缩包,其中包含了Ruby 2.4.3的源代码。这个版本是在2017年发布的,相比CentOS 6.x默认的Ruby版本,它提供了更多的改进和新特性。Ruby 2.4系列引入了性能优化、新的语法糖...

    Ruby-GNOME2.zip

    Ruby-GNOME2提供GNOME 2.0开发环境的Ruby绑定,目前在活跃更新中。如果你喜欢GTK的界面,你一定会喜欢Ruby-GNOME2。GTK目前提供Linux、 Windows等多个平台的运行库,也就是说使用GTK开发的应用程序可以在多个平台下...

    ruby-1.9.3-p547.tar.gz

    在本压缩包"ruby-1.9.3-p547.tar.gz"中,包含的是Ruby语言的一个特定版本——1.9.3-p547。 Ruby 1.9.3是Ruby的一个重要版本,发布于2012年,它带来了许多性能提升和新特性。这个版本对Ruby的语法进行了改进,包括更...

    ruby-2.5.8.tar.gz

    - 解压`ruby-2.5.8.tar.gz`:使用`tar -zxvf ruby-2.5.8.tar.gz`命令解压。 - 编译与安装:进入解压后的目录,运行`./configure`,然后`make`和`make install`进行编译和安装。 - 验证安装:通过`ruby -v`检查...

    ruby-2.4.5.tar.gz

    解压`ruby-2.4.5.tar.gz`后,你会得到一个名为`ruby-2.4.5`的目录,其中包含了Ruby源代码的所有文件和子目录。这些文件可能包括但不限于: 1. `README`: 提供关于该版本的基本信息和安装指南。 2. `INSTALL`: 包含...

    ruby-1.9.2-p290.tar.gz

    标题中的"ruby-1.9.2-p290.tar.gz"是一个开源编程语言Ruby的特定版本的归档文件,采用流行的tar和gzip格式进行压缩。这个版本是Ruby的1.9.2分支的一个更新点,标记为p290,意味着它是该分支的第290个补丁级别。在...

    ruby-debug-1.87.rar

    在开发过程中,调试是必不可少的一环,而`ruby-debug-1.87`就是Ruby社区中广泛使用的调试工具之一。本文将深入探讨`ruby-debug-1.87`的功能、安装与使用方法,以及它依赖的几个关键组件。 `ruby-debug-1.87`是一个...

    Ruby-Http2HTTP2协议的纯Ruby实现

    Ruby-Http2库通过`Stream`对象抽象了这一概念,提供了管理流状态和交换数据的方法。 4. **错误处理**:HTTP/2协议定义了一系列错误代码,Ruby-Http2库会根据这些代码抛出相应的异常,帮助开发者识别和处理网络问题...

    ruby-2.6.5.tar.gz

    在终端中输入`tar -zxvf ruby-2.6.5.tar.gz`,这会创建一个名为`ruby-2.6.5`的目录,包含所有源代码。 2. **进入目录**:使用`cd`命令进入新解压的目录,如`cd ruby-2.6.5`。 3. **配置**:运行`./configure`脚本...

    Ruby-rubybuild编译和安装Ruby

    在Ruby开发中,为了管理不同版本的Ruby环境,我们常常会使用到`rbenv`和`ruby-build`这两个工具。本文将详细介绍如何使用`ruby-build`来编译和安装Ruby。 `rbenv`是一个用于管理全局或用户级别的Ruby版本的工具,它...

    Ruby-Unread管理ActiveRecord对象的已读未读状态

    本文将深入探讨如何使用"Ruby-Unread"这个库来管理ActiveRecord对象的已读/未读状态。 "Ruby-Unread"是一个专门针对ActiveRecord设计的gem,用于跟踪和管理用户阅读记录。这个库添加了“unread”和“read”方法到...

    ruby-2.2.0.tar.gz

    Ruby-2.2.0是Ruby编程语言的一个版本,它是一个强大的、动态的、面向对象的脚本语言,以其简洁的语法和强调程序员生产力而受到欢迎。Ruby在20世纪90年代由日本的松本行弘(Yukihiro Matsumoto)创建,它的设计哲学是...

Global site tag (gtag.js) - Google Analytics