可枚举的对象
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
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
发表评论
-
39、代码块的语法
2011-05-30 12:26 664代码块的语法 1.upto(10) {|x| puts x} ... -
38、迭代和并发修改
2011-05-29 18:00 544迭代和并发修改 Ruby的核心集合类都是直接对当前的对象集合 ... -
37、外部迭代器
2011-05-28 11:56 469外部迭代器 iterator=9.downto(1) be ... -
娃娃鸭学Ruby-36、枚举器
2011-05-26 13:38 821枚举器 枚举器是类Enumeralbe::Enumerato ... -
娃娃鸭学Ruby-35、编写自定义的迭代器
2011-05-06 21:28 626自定义的迭代器 可调用一个与方法调用相关联的代码块 def ... -
娃娃鸭学Ruby-33、迭代器
2011-04-26 09:39 467虽然可用while,until和for循环 但还是更倾向于用迭 ... -
娃娃鸭学Ruby-32、for/in循环
2011-04-25 09:14 965For/in循环 for或for/in循环可对一个枚举对象( ... -
娃娃鸭学Ruby-31、作为修饰符的while和until
2011-04-23 22:49 612作为修饰符的while和until x=0 puts x=x ... -
娃娃鸭学Ruby-30、whie和unitl
2011-04-22 23:56 364While和until while 当某个特定条件为真 unt ... -
娃娃鸭学Ruby-29、?:操作符
2011-04-22 09:08 383?:操作符 def how_many_messages(n) ... -
娃娃鸭学Ruby-28、Case
2011-04-21 22:08 494Case name= case wher ... -
娃娃鸭学Ruby-27、Unless
2011-04-21 11:04 603Unless unless,作为一个语句或修饰符,和if恰好相 ... -
娃娃鸭学Ruby-26、作为修饰符的if
2011-04-20 09:09 623作为修饰符的if 采用if的普通语句形式时,Ruby的语法要 ... -
娃娃鸭学Ruby-25、If
2011-04-19 13:17 461if if 是最简单的条件式,具有多种形式 if expres ... -
娃娃鸭学Ruby-24、操作符
2011-04-17 12:01 604操作符 在Ruby语言中, ... -
娃娃鸭学Ruby-23、赋值
2011-04-16 22:02 618赋值 一个赋值表达式可以为一个或多个左值(lvalue)指定一 ... -
娃娃鸭学Ruby-22、方法调用
2011-04-16 13:42 460方法调用 方法调用由四部分组成: 一个任意的表达式,它的 ... -
娃娃鸭学Ruby-21、常量引用
2011-04-15 22:31 583常量引用 除了值在运行期间保持不变外,常量类似于变量。 R ... -
娃娃鸭学Ruby-20、变量引用
2011-04-15 09:01 517变量引用 一个变量就是一个值的名字。 通过赋值表达式可以创建 ... -
娃娃鸭学Ruby-19、字面量和关键字字面量
2011-04-13 08:54 595表达式就是一块Ruby 代码。 在许多语言区分低层的表达式和 ...
相关推荐
Ruby的面向对象的枚举
Ruby,一种为简单快捷的面向对象编程(面向对象程序设计)而创的脚本语言,在20世纪90年代由日本人松本行弘(まつもとゆきひろ/Yukihiro Matsumoto)开发,遵守GPL协议和Ruby License。...该版本为ruby-1.8.7-p302
ruby-1.9.2-p290.tar.gz,ruby,redmin,安装,
ruby-irb-1.8.7.352-13.el6.x86_64.rpm ruby-irb-1.8.7.352-13.el6.x86_64.rpm
ruby-debug-ide-0.3.1.gem
Ruby-GNOME2提供GNOME 2.0开发环境的Ruby绑定,目前在活跃更新中。如果你喜欢GTK的界面,你一定会喜欢Ruby-GNOME2。GTK目前提供Linux、 Windows等多个平台的运行库,也就是说使用GTK开发的应用程序可以在多个平台下...
mingw32-ruby-1.9.1-wxruby-2.0.1-setup.exe
ruby-2.6.5.tar.gz 来自官网, ruby-2.6.5.tar.gz 来自官网, ruby-2.6.5.tar.gz 来自官网,
ruby-debug-base19-0.11.26.gem
瑞传 RUBY-9719VG2AR主板pdf,瑞传 RUBY-9719VG2AR主板
MySQL分析 innodb
ruby-2.4.1.tar.gz
ruby-build 是一个 rbenv 插件,它提供了一个 rbenv install 命令来在类 UNIX 系统上编译和安装不同版本的 Ruby。你还可以在需要精确控制 Ruby 版本安装的环境中使用不带 rbenv 的 ruby-build。用法在开始之前,...
ruby-oci8-2.1.5-x86-mingw32.gem,ruby连接oracle数据库gem包
sqlite3-ruby-mswin32.gem
ruby-1.8.5.tar for Liunx 开魔力宝贝单机必须软件之一
官网原版安装包,官网的下载真的很慢...
ruby-2.4.5 由于官方下载速度慢,所以在这里提供下载。
ruby-1.9.3-p547.tar.gz
ruby-git, ruby/Git是一个 ruby 库,可以通过将系统调用包装到Git二进制文件来创建读取和操作Git存储库 用于 ruby的 Git库在 ruby 中使用Git的库。主页项目源代码的Git public 位于:...