(1)迭代器times,each,sort
迭代器就是特殊的循环,能更方便的遍历、排序或其他操作
4.times{
  print "hello  "
}
 
4.times{|n|
  print n
}
puts "----"
a=[7,8,9]
a.each{
  |n|
  puts n
}
puts "----"
hashes={"a"=>"one","b"=>222}
hashes.each{
  |key,value|
  puts "#{key}:#{value}"
}
 
如下是sort迭代器用于排序
a=[1,2,3,4]
a.sort{|a,b|
															b<=>a  #表示取出a在前b在后,放回去时b在前a在后,实现反序排列
}
puts a
puts "-------"
a=a.sort{ |a,b|
																									b<=>a
}
puts a
																													#sort迭代器也要接收覆盖原来的才能看到改变
 
(2)自定义迭代器
其实迭代器就是函数而已,我们调用迭代器就跟调用函数的方式一样,我们自己也可以写迭代器:
attr_accessor :title,:author
attr_accessor与它后面的第一个冒号要用空格隔开
class Book
							  attr_accessor :title,:author
										
  def initialize(title,author)
															    @author=author
																		    @title=title
																					  end
end
class BookList
																								  def initialize()
																								    @book_list=Array.new
																												  end
    def add(book)
																																	    @book_list.push(book)
																																					  end
    def length
																																							    @book_list.length
																																									  end
																																										  #可以用方括号去获取当前是哪一本书
																																											  def [](n)
																																																    @book_list[n]
																																																				  end
																																																					  #可以用方括号修改对应下标书籍
																																																						  def []=(n,book)
																																																													    @book_list[n]=book
																																																																		  end
																																																																			  #删除一本书
																																																																				  def delete(book)
																																																																									    @book_list.delete(book)
																																																																													  end
																																																																														  #自定义一个迭代器,循环输出书的标题
																																																																															  def each_title
																																																																																	    @book_list.each{
            |book|
																																																																																					      yield(book.title)   #yield有专门章节讲解,还是比较重要的一个关键字
        }
																																																																																											  end
end
temp=BookList.new
a=Book.new("001","第一本")
b=Book.new("002","第二本")
temp.add(a)
temp.add(b)
# title对应book.title
temp.each_title{|title|
  puts title
}

原文:http://www.cnblogs.com/blueColdFire/p/5164531.html