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

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



















  1. 单行if语句

if    then    end

(    ) if


  1. 多行if语句

if    elsif    else    end


  1. unless条件语句

unless

if not


  1. 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.  线程

当前1/4页 1234下一页阅读全文

(0)

相关推荐

  • Ruby rails 页面跳转(render和redirect_to)

    Ruby代码 复制代码 代码如下: if @user.update_attributes(:password => params[:user][:password]) flash[:notice] = '密码修改完成' redirect_to :action => 'index' else redirect_to :action => 'change_pass', :id => @user end 后来随手改了下第5行,把redirect_to改为render,居然就OK了.网上找

  • 在Ruby on Rails中使用Rails Active Resource的教程

    简介 当今的应用程序不仅需要和基于浏览器的客户端互操作,还需要和其他应用程序互操作.为实现互操作性,web 应用程序通常提供一个 web 服务 API.web 服务 API 通过一个网络(比如 Internet)提供对应用程序 的远程访问.直到最近,web 服务 API 还使用重型.复杂的基于 SOAP 的 web 服务集成,这种 web 服务,不仅没有什么优点,而且还需要很长时间才能实现.带有基于 Representational State Transfer (REST) 服务的 Rails

  • ruby 学习笔记(2) 类的基本使用

    ruby语言跟c#的一些重要差别在于: 1.ruby是动态语言,c#是静态语言--即对象在new出来以后,ruby还可以动态给对象实例添加一些属性或方法(javascript也是如此) 2.ruby中刻意弱化了变量类型这个概念,默认情况下变量/方法都不需要声明具体(返回)类型,但其实在ruby内部,会自动根据变量的值分配类型.(可以通过 "puts 变量.class"查看) 3.ruby相对c#来讲,可能有些雷的地方在于:父类中的private成员,居然是可以在子类中使用的! ...其

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

    Page 3 概述 ¨         解释执行:Python,Ruby,交互性很好: ¨         编译执行:Pascal, C,速度较快. n         本地执行,如C,C++: n         虚拟机执行,如Java, C#. ¨         动态语言,如JavaScript,Ruby: ¨         静态语言,如C++,Java. 语言 ¨         语法 关键字 ¨         语义 ¨         语用 松本行弘(Matz) 1993 Ruby

  • InnoDb 体系架构和特性详解 (Innodb存储引擎读书笔记总结)

    后台线程 •Master Thread 核心后台线程,主要负责将缓冲池的数据异步刷新到磁盘.例如脏页的刷新,插入缓冲的合并,undo 页的回收等. 每秒一次的操作: 1.日志缓冲刷新到磁盘,即使该事务还没有提交.该操作总是会发生,这个就是为了再大的事务,提交时间都很短. 2.当IO压力很小时(1s内发生的IO次数小于5% innodb_io_capacity)合并5% innodb_io_capacity 的插入缓冲. 3.当脏页比例大于 innodb_max_dirty_pages_cnt,

  • MYSQL必知必会读书笔记第十和十一章之使用函数处理数据

     mysql简介 MySQL是一种开放源代码的关系型数据库管理系统(RDBMS),MySQL数据库系统使用最常用的数据库管理语言--结构化查询语言(SQL)进行数据库管理. 拼接字段 存储在数据库表中的数据一般不是应用程序所需要的格式.我们需要直接从数据库中检索出转换.计算或格式化过的数据:而不是检索出数据,然后再在客户机应用程序或报告程序中重新格式化. 计算字段(字段 = 列,不过数据库列一般称为列,而字段通常用于计算字段中)并不实际存在于数据库表中,计算字段是运行时在select语句内创建的

  • javascript框架设计读书笔记之种子模块

    1.命名空间: js里面的命名空间就是使用对象的属性来扩展的.比如,用户定义一个A对象,A对象下面有B属性和C属性,同时B属性和C属性又是对象.因此A={B:{},C:{}},这时用户就可以在B对象和C对象中定义一样的方法,属性了.因此B和C就属于不同的命名空间.我们调用B,C对象里面的方法,就可以通过A.B.like(),A.C.like()调用了.当然A属于window对象中的属性. 但是有一种情况,比如:boke.jsp页面引入了jquery.js以及prototype.js(他们都会在w

  • PHP读书笔记_运算符详解

    什么是运算符 什么是运算符?运算符是告诉PHP做相关运算的标识符号.例如,你需要计算123乘以456等于多少,这时候就需要一个符号,告诉服务器,你需要做乘法运算. PHP中的运算符有哪些?PHP运算符一般分为算术运算符.赋值运算符.比较运算符.三元运算符.逻辑运算符.字符串连接运算符.错误控制运算符. PHP中的算术运算符 算术运算符主要是用于进行算术运算的,例如:加法运算.减法运算.乘法运算.除法运算.在PHP中的常用的算术运算符对应下表: PHP中的赋值运算符 PHP的赋值运算符有两种,分别

  • PHP读书笔记整理_结构语句详解

    PHP结构语句顺序结构 顺序结构就像一条直线,按着顺序一直往下执行.我们编写的代码默认都是按照顺序结构执行的. 条件结构之if-else- 条件结构就像一个岔路口,可以向左走,也可以向右走.比如上洗手间,我们知道我们的性 别,这时候我们需要根据洗手间提供的条件,左边男洗手间,右边女洗手间,或者正好相反,其中性别就是这个条件结构的条件.再比如,现在的分数都流行使用 A.B.C来分级,假设考试成绩是93分,可以将其设置为等级A,考试成绩是87,可以将其设置为等级B,这里分数区间即为条件结构中的条件.

  • MYSQL必知必会读书笔记第六章之过滤数据

    mysql简介 MySQL是一种开放源代码的关系型数据库管理系统(RDBMS),MySQL数据库系统使用最常用的数据库管理语言--结构化查询语言(SQL)进行数据库管理. where子句的位置,在同时使用ORDER BY 和WHERE子句时应该让ORDER BY 位于where之后,否则会产生错误. 1.不匹配检查 复制代码 代码如下: SELECT vend_id FROM products where vend_id <>1003 等同于 复制代码 代码如下: SELECT vend_id

  • MYSQL必知必会读书笔记第三章之显示数据库

    MySQL是一种开放源代码的关系型数据库管理系统(RDBMS),MySQL数据库系统使用最常用的数据库管理语言--结构化查询语言(SQL)进行数据库管理. show column from tablename: 对每一个字段返回一行,行中包含字段名,数据类型.是否允许NULL.键信息.默认值以及其他信息. describe 语句: MySQL支持使用describ作为show columns from 的一种快捷方式.describ tablename 所支持的其他的show语句: show s

  • MYSQL必知必会读书笔记第七章之数据过滤

    mysql简介 MySQL是一种开放源代码的关系型数据库管理系统(RDBMS),MySQL数据库系统使用最常用的数据库管理语言--结构化查询语言(SQL)进行数据库管理. 计算次序: where 可以包含任意数目的and和or,允许两者结合以进行复杂和高级的过滤.但是SQL在操作or之前会优先的处理AND操作符.如果想优先的使用or的条件可以使用括号. in:为什么要使用in操作符?其优点具体如下. 1.在使用长的合法选项清单时,in操作符的语法更清楚直观 2.在使用IN时,计算的次序更容易管理

  • MYSQL必知必会读书笔记第二章之版本更改

    MySQL的当前版本为版本5,以下列出最近版本的主要更改: 4.---------InnoDB引擎,增加了事务处理.并.改进全文搜索等支持. 4.1--------对函数库.子查询.集成帮助等重要增加. 5.-------------增加了存储过程.触发器.游标.视图等 以上内容是小编给大家介绍MYSQL必知必会读书笔记的相关知识,希望对大家有所帮助!

随机推荐