ruby迭代器基础
“循环”会用在程序中的各种地方。而在循环的地方善用“迭代器”,则是熟练进行Ruby程序设计的重要关键。
不过,迭代器确实有比较抽象的地方,语法也有点怪异(尤其是yield的用法),光是依靠文字说明、看一两个示例,还是不太好懂。其实,当初笔者开始学习Ruby时就卡在这里,很久都搞不懂。
所以在本章中,将通过很多的示例,来慢慢探索Ruby的迭代器。
20.1 迭代器与区块调用
首先来整理一下用词和术语。在Ruby中说到“迭代器”,通常可能有两种意义。
所谓的“迭代器”,本来是指在反复(iterate)的处理中,用来控制反复方式这个“功能”。而在Ruby语言里,迭代器也表示实现这个功能的方法,或者这种方法的接口。
然而Ruby的迭代器接口,有时候又被用在循环以外的地方,例如,让使用者自定义方法一部分的功能,这个用途已经很难称作是迭代器了。
名称与功能不一致,是导致容易搞混的原因。所以又有人称这些使用迭代器的语法但内容并没有进行反复处理的东西叫做“区块”或“代码区块”。但是这又很容易与while等语句的do~end部分那种程序语言规范上的区块搞混,因此这种用词还是不太好。
所以在这一章中,无论是不是迭代器,凡是“迭代器”的语法接口,都称为“区块调用”。在这里希望读者注意的是,说“迭代器”的时候,表示一定与反复处理有关;而说“区块调用”的时候,就可能不一定与反复处理有关系了。
20.2 迭代器的基础知识
迭代器是抽象化的“反复处理”。但抽象思考毕竟不容易,所以让我们从比较具体的反复处理来思考吧。请看程序20.1。
程序20.1 print_times.rb
5.times {
print "<br>\n"
}
这与单纯调用5次print方法意思是一样的。也就是说,一样的程序可以写成程序20.2这样。
程序20.2 print_no_times.rb
print "<br>\n"
print "<br>\n"
print "<br>\n"
print "<br>\n"
print "<br>\n"
当然,说是“反复处理”,也不尽然是一模一样的动作。
请看下面的示例(程序20.3),用来计算数值1到5的和。
程序20.3 sum_each.rb
sum = 0
(1..5).each{|i|
sum += i
}
print "合计: ",sum,"\n"
> ruby sum_each.rb
合计: 15
这与下面的程序20.4的意思是一样的。
相关文档:
Watir 语法(Web Application Testing in Ruby)
# watir的安装
watie的安装请查看 -> Ruby library的安装
# 使用Watir工具,需要在脚本中加上
require 'watir'
# 创建一个IE的实例
ie = Watir::IE.new
或者在创建的同时直接转到页面
ie = Watir::IE.start('http://www.text.com/')
Watir使用start方法 ......
本文转自:
http://hi.baidu.com/24xinhui/blog/item/9f52dd34382e11325ab5f553.html
ruby-语法
2009年06月20日 星期六 上午 00:21
http://www.blogjava.net/xxllnnn/archive/2009/01/18/251762.html
http://www.cnblogs.com/cnblogsfans/archive/2009/01/24/1380804.html
__setobj__ (2009-7-14)
&nbs ......
Installing Ruby from source is my preferred method, although in Ubuntu Feisty you can supposedly install it with apt-get install ruby
now. Here’s the essential packages needed to get a source build working right though and the process I just went through:
sudo apt-get install build-essentia ......
Ruby语言学习系列--基本的ruby语法
1. 基本的ruby语法
1.1 变量、常量和类型
1) 定义变量
变量类型
描述
示例
局部变量(或伪变量)
以小写字母或下划线卡头
var _var
全局变量
以$开头
$ ......
此例子在 Ruby Ruport实践—简单报表系统 及 Ruby Ruport实践—中文PDF报表之PRAWN 的基础上进行完善,添加了对报表参数的设计及实现。
一、创建数据表report_parameters
create table report_parameters
(report_parameter_id integer not null auto_increment,
report_execute_id integer not null, ......