return,break,next区别
- return: 跳出循环
- break: 跳出迭代器
- next: 直接进入下次循环
异常处理
begin
p "正常情况"
rescue e
p "异常情况"
raise "抛出异常"
ensure
p "出错继续执行"
end
最常用的迭代器:
each
迭代取出(元素),返回原对象each_with_index
迭代取出(元素,索引),返回原对象map
和collect
迭代取出(元素),返回代码块处理后新数组[加上!返回修改后原数组]to_a
无代码块,返回数组对象find
迭代取出满足代码块(元素),返回元素或nilselect
和find_all
迭代取出代码块要求的(元素),返回元素数组reject
迭代丢弃代码块要求的元素,返回剩下的数组inject
设定一个初始(累加值),迭代取出(元素),在代码块中处理,代码块的返回值将作为下一次迭代的累加值,返回最后一次迭代的返回值
迭代器简介
- 一个Ruby迭代器就是一个简单的能接收代码块的方法(比如each这个方法就是一个迭代器)。特征:如果一个方法里包含了yield调用,那这个方法肯定是迭代器;
- 迭代器方法和块之间有如下传递关系:块被当成一个特殊参数传给迭代器方法,而迭代器方法内部在使用yield调用代码块时可将参数值传入块;
- 实际上,迭代器的功能就是一种回调!迭代器方法所属的类只负责遍历需要遍历的元素,而对元素所做的处理则通过回调代码块来实现;
- Ruby中的容器对象(如数组、Range和Hash对象等)都包含了两个简单的迭代器,分别是each和collect。each可以认为是最简单的迭代器,它会对集合的每个元素调用块。 collect,将容器中的元素传递给一个块,在块中处理后返回一个包含处理结果的新数组;