Ruby中的迭代器详解

2019-09-25 09:47:51于海丽

}
print "Sum="+sum.to_s

这里说明一下:上述程序使用了pair[1]读取Map的值,如果要读取Map的键时则写成pair[0]。

如果需要输出Map的Key,可以这样:

outcome = {"book1"=>1000, "book2"=>1000,"book3"=>4000}
outcome.each_key do |k|
 puts k
end

如果需要输出Map的value,则可以这样:


outcome = {"book1"=>1000, "book2"=>1000,"book3"=>4000}
outcome.each_value do |v|
 puts v
end

文件迭代器

  实在是没有想到,对于文件,Ruby也有迭代器可用。如下:

f = File.open("sample.txt")
f.each{|line|
 print line
}
f.close

其实,我们可以使用代码块来进行同样的操作:


File.open("str.rb", "r") do |file|
    file.each{|line|
  print line
 }
end

使用代码块,不需要手动close。这个推荐!

目录迭代器

很多时候,我们需要列出某个目录下的文件列表,设置对每个文件进行操作,这时也需要迭代器。Ruby也考虑到了:

Dir.foreach("c://") do |file|  # 请根据自己的系统类型,做适当的修改
 puts file
end

#输出太多,就不贴结果了。可以自己运行一下看看

结尾

  通过上面的介绍可以看出,Java和Ruby相比,在迭代器方面简直是弱爆了!当然,D瓜哥刚刚开始学习Ruby,文中有不当甚至解释错误的地方,劳烦指出,D瓜哥会尽快改正的。