《Ruby从入门到精通》数据、表达式和流程控制
来源:互联网 发布:优化mysql配置 编辑:程序博客网 时间:2024/06/03 18:09
Ubuntu 11.10已经内置了Ruby,这个还蛮好的,嘎嘎
第二章 编程等于快乐:Ruby和面向对象概览
irb:交互式Ruby,输入就有结果的交互式环境(即时反馈)
与其他语言中对类的定义一样,Ruby中类名永远用大写字母开头
irb(main):001:0 最末尾的数字表示代码深度,也就是处于多少层的意思
用print和puts都可把内容打印到屏幕。其中puts命令会自动把输出光标放到下一行,而print在上次的光标位置继续打印文本。
Ruby中类的继承非常简单明了,就是建立了父类,子类会继承它所有属性,而且也一目了然。
一切都是对象:在Ruby中,几乎一切都是对象,任何操作都可以看作是通过方法来实现的。比如,计算加减法是使用内置类Fixnum的对象。我们也可以向Fixnum类增加自己的方法。
Kernel模块(注:Ruby中的Kernel模块只是代表“核心”,跟操作系统中的内核毫无关系)中的方法在Ruby的每个类和有效范围内都可使用。比如puts,而且不需要写出完整的命令,因为Kernel模块是被默认包含和搜索的。puts方法只接受一个自由变量。
第三章 Ruby的构造元素:数据、表达式和流程控制
Ruby提供了一种巧妙的手段,用between?方法来判断某对象是否处于指定的两个值之间,是则返回true。例如,age.between?(12,20)。
在Ruby中要执行一个循环操作,可以使用下列times方法,比如
5.times do ... end 或者 5.times {...}
Ruby中有一种创建循环的机制,叫做迭代子(iterator)。所谓迭代子,是指在列表条目中逐步递进的东西。
迭代子可以上溯,可以下溯,还可以调用step方法,比如
1.upto(5){...} 10.downto(5){...} 0.step(50,5){...}
如果字面字符串包含有多行,那么就应该使用%q{和}
也可以用引入文档(here document)来构建字面字符串。<<标记着字面字符串的开始,后接所选择的分界符,分界符甚至可以是一串单词哦
插写(interpolation)是指表达式结果插入字面字符串的过程。在字符串中插写的方式,是把表达式放在#{和}符号中。
当然,不用插写方式,把表达式放到字符串之外,也可以得到和前面相同的结果。
------------------------------------------------正则表达式------------------------------------------------
替换:sub方法替换第一次遇到的指定内容,gsub替换所有的指定内容
正则表达式中基本的特殊字符和符号
=~是匹配查询运算符,如果字符串与运算符后面的正则表达式能够匹配,则该表达式结果为true。
String类提供的名为match的方法,提供了更为强大的能力。
---------------------------------------------------数组---------------------------------------------------
数组不需要设置预定义空间,或手工分配元素。
在Ruby中,可以使用“压入数据”的方法,向数组末尾加入内容。比如使用“<<"或者调用push方法
x = [ ]
x << "Word"
数组是先进先出系统,数据既能被压入数组末尾,也能从数组末尾弹出(弹出是从数组末尾检索数据并同时将其删除的过程),调用pop方法可以将元素弹出
如果数组中全都是字符串,可以对该数组调用名为join的方法,将所有元素连接起来形成一个大字符串。
join方法可接受一个可选参数,放在结果字符串的每个元素之间。
split方法可以将字符串切分成字符串数组
inspect方法可以直接打印输出
数组中迭代的方法很简单,each方法遍历数组中的每个元素,把该元素当作参数,传递给用户提供的代码块。
collect方法在数组中逐个元素地进行迭代,并用代码块中表达式的结果,对该元素进行赋值。
数组的其他操作:数组加法和串连(也就是合并)+
数组减法 -
检查数组是否为空 empty
检查数组是否有某个元素 include?
访问数组第一个和最后一个元素 first last
反转数组元素的顺序 reverse.inspect
------------------------------------------------------散列表-------------------------------------------------------
散列表中的对象不在列表中给定位置,而是给定一个指向对象的键(key)。散列表更像字典,而不像列表,因为它没有确定的顺序,只有键和值之间的简单链接。比如:
dictionary = { 'cat' => 'feline animal', 'dog' => 'canine animal' }
其中=>前为键,后为值
散列表可以被看作为数组,其元素具有名字,而非位置序号。我们甚至可以用与数组相同的方法,来改变散列表元素的值。
检索键:(x是散列表)x.keys.inspect
删除元素:x.delete(" “)
散列表中有可能使用散列表(或任何类型的对象),甚至数组,甚至散列表中的散列表作为元素。
---------------------------------------------------流程控制-------------------------------------------------------
if和unless可以根据条件执行不同的操作来控制程序流程
Ruby中还提供了elsif表示“否则如果”,case...when来分条件处理
each方法接受单个代码块作为参数,该代码块的定义位于{和}符号之间,或位于do和end之间。我们可以自己编写方法来处理代码块,或者使用yield方法(它能自动检测传递给它的代码块,并将控制权移交给该代码块,也可以用lambda方法,把代码块存储在变量中。
其他:
Ruby提供了Time类来处理日期和时间。
Time类允许根据任意日期创建Time对象
Time.local(year,month,day,hour,min,sec,msec)
在Ruby中,过于大的数字交给Bignum类处理
Ruby中的符号相当独特,它不包含值或对象,不像变量那样,而是用作代码中固定的名字。符号可以减少内存占用,而且使代码更为简洁。
- 《Ruby从入门到精通》数据、表达式和流程控制
- Java从入门到精通 - 流程控制
- 《Ruby从入门到精通》 2.10 Ruby历史和社区
- CH4.....PHP从入门到精通,流程控制语句
- 《Ruby从入门到精通》部署Ruby应用和程序库 Ruby高级功能 综合演练
- Ruby 从入门到精通 译者序
- Ruby构造元素:数据、表达式、和流程控制
- Git版本控制 从入门到精通
- 正则表达式从入门到精通
- 正则表达式从入门到精通
- 正则表达式从入门到精通
- 正则表达式从入门到精通
- 正则表达式从入门到精通
- 正则表达式从入门到精通
- 正则表达式从入门到精通
- 正则表达式从入门到精通
- 正则表达式从入门到精通
- 正则表达式从入门到精通
- 第15周报告1:冒泡排序算法
- ajax缓存问题的解决办法
- /subsystem:windows 与 /subsystem:console
- IE,火狐,OPERA等浏览器CSS Hack和向后兼容
- JAVA的StringBuffer类
- 《Ruby从入门到精通》数据、表达式和流程控制
- 在.NET环境中实现每日构建--NAnt篇
- 黑马程序员(SQL)--SQL学习笔记(一)
- Flex中定制带图标的Tooltip
- windows 工具软件
- JS教程:给JavaScript文件传递参数
- mysql 时间转换 用EXCEL实现MySQL时间戳格式和日期格互转
- 数据库索引失效的条件
- SAP小数点四舍五入处理