Terry 7月Ruby读书笔记(比较详细)

Page 3 概述



¨ 解释执行:PythonRuby交互性很好;

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

n 本地执行如CC

n 虚拟机执行如Java, C#



¨ 动态语言如JavaScriptRuby;

¨ 静态语言如CJava







语言

¨ 语法

关键字

¨ 语义

¨ 语用







松本行弘(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 'pr "hello world"'

hello world





ruby 运行ruby;

-e 执行后面ruby脚本

pr 打印显示;

hello,world 要输出内容



第 2种方式:irb交互执行



C:\Documents and Settings\Administrator>irb

irb():001:0> pr "hello world"

hello world=> nil

irb():002:0> exit





exit: 退出irb交互式环境



第 3种方式:创建ruby脚本



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

pr "hello world"

pr "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”定要写在行首也就是说行前 6个是“=begin”的前不允许有空格

2. 分行

用分号;表示语句结束

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

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

3. 分隔符



名称

符号

用途


分号

;

用来分隔行中多个语句


圆括号

( )

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


空格



分隔;在可省略()地方代替()


逗号

,

隔开多个参数




.

将对象和它思路方法隔开


紧连两个冒号

::

域作用符将模块(类)和它常量隔开



4. 关键字

Ruby中关键字如下:



模块定义:

module

异常处理:

rescueensure


类定义:



对象引用:

superself


思路方法定义:

defundef

起始:

begin/end


检查类型:

d?

嵌入模块:

BEGINEND


逻辑值和空值:

truefalsenil

文件相关:

__FILE____LINE__


逻辑判断:

notandor

思路方法返回:




条件语句:

thenelswhenunless

别名:

alias


循环语句:

forinwhileuntilnextdoredoretryyield



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

require应该取消BEGIN和END语法定义

5. 运算符

6. 标识名:

常量变量思路方法类和模块;

大小写敏感;

标识名第表明这个名字使用方法



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

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


类名、模块名和常量

用大写字母开头


全局变量

以美元符为前缀$;


例子变量

以@开头;


类变量

用@@开头;



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

@后面不可以直接跟数字

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

7. 类库

可以直接使用:

i) 关键字;

ii) require或者包含类库中类、思路方法;

iii)从父类中继承得到思路方法





puts

每个参数后自动换行


pr

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


prf

按格式输出不自动换行


gets

从键盘或文件中读入数据







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

hello

world







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

number:3.200000







注意:prf参数的间用逗号隔开



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

",1.5,"hello world"'

number:1.500, hello world





8. 数据类型



类型

分类

介绍说明及举例


数字

整数型

0 8进制,

0x 十 6进制,0b 2进制


浮点型




单引号 ‘'




双引号 “”






从0开始每个元素可以区别类型

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


区间

1..5

1,2,3,4,5


1…5

1,2,3,4


正则表达式







9. 赋值运算

交换变量ab值:

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. 判断语句



  1. 单行语句 then end


    ( )


    1. 多行语句 els end


      1. unless条件语句

        unless




        not




        1. 分支条件语句



          when

          when



          end





          12. 循环语句



          单行while

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


          多行while

          while 条件

          语句,语句

          end


          until直到

          until 跳出循环条件 语句

          until 条件=while not (条件)


          for…in循环

          for 变量 in 对象

          语句1; 语句2 ; 语句…

          end





          next&redo&retry

          在循环体内如果遇到:





          跳出当层循环;


          next

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


          redo

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


          retry

          重头开始这个循环体





          times , upto , downto , each ,step



          语句

          运行结果


          3.times { pr "Hi!" }

          #Hi!Hi!Hi!


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

          #123456


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

          #654321


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

          #123456


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

          #0369







          C:\Documents and Settings\Administrator>irb

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

          123456=> 1

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

          654321=> 9

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

          123456=> 1..9

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

          0369=> 0





          13. 异常

          Java

          try…catch…finally…throw

          Ruby

          begin/end…rescue…ensure…raise

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

          14. 线程
          Tags: 

          延伸阅读

最新评论

发表评论