Terry七月Ruby读书笔记(比较详细)第1/4页

时间:2021-05-22

Page 3 概述

¨ 解释执行:Python,Ruby,交互性很好;

¨ 编译执行:Pascal, C,速度较快。

n 本地执行,如C,C++;

n 虚拟机执行,如Java, C#。

¨ 动态语言,如JavaScript,Ruby;

¨ 静态语言,如C++,Java。

语言

¨ 语法

关键字

¨ 语义

¨ 语用

松本行弘(Matz) 1993

Ruby [`ru:bi](红宝石)

Ruby 吸取了 perl 的正则表达式, python 的简单性可读性,smalltalk 的纯面向对象语法和单继承,LISP 的无穷嵌套的语法,Java的线程…

Page 14 上手

XP

Cmd

C:\Documents and Settings\Administrator>ruby -v

ruby 1.8.6 (2007-09-24 patchlevel 111) [i386-mswin32]

第一种方式:ruby命令

C:\Documents and Settings\Administrator>ruby -e 'print "hello world"'

hello world

ruby 运行ruby;

-e 执行后面的ruby脚本程序;

print 打印显示;

hello,world 要输出的内容。

第二种方式:irb交互执行

C:\Documents and Settings\Administrator>irb

irb(main):001:0> print "hello world"

hello world=> nil

irb(main):002:0> exit

exit: 退出irb交互式环境

第三种方式:创建ruby脚本

C:\Documents and Settings\Administrator>copy con helloworld.rb

print "hello world"

print "3*7=",3*7

^Z

已复制 1 个文件。

C:\Documents and Settings\Administrator>helloworld.rb

hello world3*7=21

Page 17 IDE

¨ Eclipse + RDT(Ruby Development Tools)

¨ FreeRIDE+SciTE

1.在SciTE编辑Ruby代码;

2.保存为 .rb文件;

3.菜单栏,工具->运行或者F5;

Page 18 语法

1. 注释

单行注释 # 多行注释 =begin =end

Ruby的内嵌文档(Rdoc)注释,用ri命令从源文件中产生文档。

Rdoc内嵌在ruby代码之中的,可以转换为html文档。

ri命令,用来查看函数说明、类说明。函数说明、类说明应该放置在=begin和=end之中。注意:“=begin”一定要写在行首,也就是说,这一行前六个字符是“=begin”,之前不允许有空格。

2. 分行

用分号;表示语句结束。

一行多个语句,用分号隔开,最后一个语句,分号可以省略,换行符表示一行结束。

语句太长,可以在行末用符号 \ ,表示续行。

3. 分隔符

名称

符号

用途

分号

;

用来分隔一行中的多个语句

圆括号

( )

提高优先级;定义方法时容纳参数列表

空格

分隔字符;在可省略()的地方,代替()

逗号

,

隔开多个参数

.

将对象与它的方法隔开

紧连的两个冒号

::

域作用符,将模块(类)与它的常量隔开

4. 关键字

Ruby中的关键字如下:

模块定义:

module

异常处理:

rescue,ensure

类定义:

class

对象引用:

super,self

方法定义:

def,undef

块的起始:

begin/end

检查类型:

defined?

嵌入模块:

BEGIN,END

逻辑值和空值:

true,false,nil

文件相关:

__FILE__,__LINE__

逻辑判断:

not,and,or

方法返回:

return

条件语句:

if,then,else,elsif,case,when,unless

别名:

alias

循环语句:

for,in,while,until,next,break,do,redo,retry,yield

BEGIN模块相当于C语言中的宏,END模块用来作一些收尾工作。有了

require,include,应该取消BEGIN和END的语法定义。

5. 运算符

6. 标识名:

常量,变量,方法,类和模块;

大小写敏感;

标识名第一个字符表明这个名字的用法。

局部变量、方法参数和方法名称

以小写字母开头或者下划线开头;

类名、模块名和常量

用大写字母开头。

全局变量

以美元符为前缀$;

实例变量

以@开头;

类变量

用@@开头;

词首字母后面可以是字母、数字和下划线的任意组合;

@后面不可以直接跟数字。

Ruby程序代码用7位ACSII码来表示,通过语言扩展来支持 EUC,SJIS或UTF-8等8位编码系统。Ruby2.0版本将支持16位的Unicode编码。

7. 类库

可以直接使用:

i) 关键字;

ii) require或者include包含的类库中的类、方法;

iii)从父类中继承得到的方法。

puts

每个参数后自动换行

print

不自动换行,换行用”\n”

printf

按格式输出,不自动换行

gets

从键盘或文件中读入数据

C:\Documents and Settings\Administrator>ruby -e 'puts "hello","world"'

hello

world

C:\Documents and Settings\Administrator>ruby -e 'printf "number:%f",3.2'

number:3.200000

注意:printf的参数之间用逗号隔开。

C:\Documents and Settings\Administrator>ruby -e ' printf "number:%4.3f,string %s

",1.5,"hello world"'

number:1.500,string hello world

8. 数据类型

类型

分类

说明及示例

数字

整数型

0 八进制,

0x 十六进制,0b 二进制

浮点型

字符串

单引号 ‘'

双引号 “”

数组

从0开始,每个元素可以不同类型

例 [2.4,"thank you",[a,b,c],78]

区间

1..5

1,2,3,4,5

1…5

1,2,3,4

正则表达式

9. 赋值运算

交换变量a,b的值:

a,b=b,a;

注意括号:

a = (b = 1 + 2) + 3 #a=6 ,b=3

逗号,从左往右运算,分别赋给a,b,c

x = 0 #x=0

a,b,c = x, (x+1), (x+2) #a=0 ,b=1,c=2

10. 条件运算

==

等于

!=

不等于

eql?

比较两个对象的值、类型是否相等

equal?

比较两个对象在内存中地址是否相同

<

小于

>

大于

<=

小于等于

>=

大于等于

=~

匹配正则表达式

!~

断言不匹配正则表达式

===

右边的对象在左边区间内

puts(0..9)===3.14 #true puts('a'..'f')==='c' # true

<=>

比较两个对象大小,大于1,等于0,小于-1.

Ruby里,nil和false为假,其它都为真。

11. 判断语句

  • 单行if语句
  • if then end

    ( ) if

  • 多行if语句
  • if elsif else end

  • unless条件语句
  • unless

    if not

  • case分支条件语句
  • case

    when

    when

    else

    end

    12. 循环语句

    单行while

    (语句1;语句2;语句…)while条件

    多行while

    while 条件

    语句,语句

    end

    until直到

    until 跳出循环条件 语句

    until 条件=while not (条件)

    for…in循环

    for 变量 in 对象

    语句1; 语句2 ; 语句…

    end

    break,next&redo&retry

    在循环体内,如果遇到:

    break

    跳出当层循环;

    next

    忽略本次循环的剩余部分,开始下一次的循环;

    redo

    重新开始循环,还是从这一次开始;

    retry

    重头开始这个循环体。

    times , upto , downto , each ,step

    语句

    运行结果

    3.times { print "Hi!" }

    #Hi!Hi!Hi!

    1.upto(9) {|i| print i if i<7 }

    #123456

    9.downto(1){|i| print i if i<7 }

    #654321

    (1..9).each {|i| print i if i<7}

    #123456

    0.step(11,3) {|i| print i }

    #0369

    C:\Documents and Settings\Administrator>irb

    irb(main):001:0> 1.upto(9){|i| print i if i<7}

    123456=> 1

    irb(main):002:0> 9.downto(1){|i|print i if i<7}

    654321=> 9

    irb(main):003:0> (1..9).each {|i| print i if i<7}

    123456=> 1..9

    irb(main):004:0> 0.step(11,3) {|i| print i}

    0369=> 0

    13. 异常

    Java

    try…catch…finally…throw

    Ruby

    begin/end…rescue…ensure…raise

    retry可以用在rescue中。可以只用rescue或ensure,两者都使用时,rescue必须在ensure前。

    14. 线程
    1234下一页阅读全文

    声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。

    相关文章