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

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下一页阅读全文

时间: 2024-09-23 02:27:51

Terry七月Ruby读书笔记(比较详细)第1/4页_ruby专题的相关文章

Programming Ruby读书笔记(四)

Ruby正则表达式 三种表示方法: Regexp.new('^s*[a-z]') /^s*[a-z]/ %r...{^s*[a-z]} 测试代码: def show_reqexp(a, re) if a =~ re "#{$`} << #{$&} >> #{$'}" else "no match" end end puts show_reqexp("Fats Waller", /ll/) 结果:Fats Wa &l

Programming Ruby读书笔记(三)

Ruby的标准类型: A.数字 class Test 3.times { print "X " } 1.upto(5) { |i| print i, " " } 99.downto(95) { |i| print i, " " } 50.step(80,5) { |i| print i, " " } a = "23" b = "34" puts " " puts a

Programming Ruby读书笔记(二)

1.再谈ruby数组. class Test a = [1, 3, 5, 7, 9] puts a[0] #----->1 puts a[-2] #----->7 puts a[1, 3] #----->[3, 5, 7] puts a[-3, 2] #----->[5, 7] puts a[1..3] #----->[3, 5, 7] puts a[1...3] #----->[3, 5] a[2] = 'cat' #----->[1, 3, "cat

Programming Ruby读书笔记(一)

1. 成员变量的读写属性: attr_reader 和 attr_writer class Test def initialize(name) @name = name end attr_reader :name attr_writer :name end test = Test.new("AAA") puts test.name test.name = "BBB" puts test.name 如果不使用这2个关键字,则按照Java的风格这样写 class Tes

Windows下Ruby on Rails开发环境安装配置图文教程_ruby专题

本文详细介绍如何在Windows配置Ruby on Rails 开发环境,希望对ROR初学者能有帮助. 一.下载并安装Ruby Windows下安装Ruby最好选择 RubyInstaller(一键安装包). 下载地址: http://rubyforge.org/frs/?group_id=167 . 我们这里下载目前较新的rubyinstaller-1.9.3-p0.exe 一键安装包.这个安装包除了包含ruby本身,还有许多有用的扩展(比如gems)和 帮助文档. 双击安装,安装过程出现如下

Ruby中相等性判断的4种方法_ruby专题

很早就知道 ruby 有 4 种相等性判断方法,分别是:"==","===","equal?" 和 "eql?",平常程序中都有使用,但是感觉对其缺乏深入理解,今天读 rails 部分源码的时候拿捏不定其中一个判断的意思,于是趁机深入研究了一番,总算觉得比较清楚了,今天做一下笔记,以作备忘. "==" 最常见的相等性判断 "==" 使用最频繁,它通常用于对象的值相等性(语义相等)判断,在

实例解析Ruby设计模式编程中Strategy策略模式的使用_ruby专题

今天你的leader兴致冲冲地找到你,希望你可以帮他一个小忙,他现在急着要去开会.要帮什么忙呢?你很好奇. 他对你说,当前你们项目的数据库中有一张用户信息表,里面存放了很用户的数据,现在需要完成一个选择性查询用户信息的功能.他说会传递给你一个包含许多用户名的数组,你需要根据这些用户名把他们相应的数据都给查出来. 这个功能很简单的嘛,你爽快地答应了.由于你们项目使用的是MySQL数据库,你很快地写出了如下代码: require 'mysql' class QueryUtil def find_us

在Ruby中创建和使用哈希的教程_ruby专题

哈希(Hash)是类似 "employee" => "salary" 这样的键值对的集合.哈希的索引是通过任何对象类型的任意键来完成的,而不是一个整数索引,其他与数组相似. 通过键或值遍历哈希的顺序看起来是随意的,且通常不是按照插入顺序.如果您尝试通过一个不存在的键访问哈希,则方法会返回 nil. 创建哈希 与数组一样,有各种不同的方式来创建哈希.您可以通过 new 类方法创建一个空的哈希: months = Hash.new 您也可以使用 new 创建带有默

Ruby实现二分搜索(二分查找)算法的简单示例_ruby专题

在计算机科学中,二分搜索(英语:binary search),也称折半搜索(英语:half-interval search).对数搜索(英语:logarithmic search),是一种在有序数组中查找某一特定元素的搜索算法.搜索过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜索过程结束:如果某一特定元素大于或者小于中间元素,则在数组大于或小于中间元素的那一半中查找,而且跟开始一样从中间元素开始比较.如果在某一步骤数组为空,则代表找不到.这种搜索算法每一次比较都使搜索范围缩小一半