- 时间:2022-09-04 09:26 编辑: 来源: 阅读:
- 扫一扫,手机访问
摘要:Terry七月Ruby读书笔记(比较详细)第1/4页
[b]Page 3 [/b][b]概述[/b][b][/b]
|
¨ 解释执行:Python,Ruby,交互性很好;
¨ 编译执行:Pascal, C,速度较快。
n 本地执行,如C,C++;
n 虚拟机执行,如Java, C#。
¨ 动态语言,如JavaScript,Ruby;
¨ 静态语言,如C++,Java。
|
[b]
[/b]
松本行弘(Matz) 1993
Ruby [`ru:bi](红宝石)
[img]http://img.1sucai.cn/uploads/article/2018010710/20180107100119_0_98728.gif[/img]
Ruby 吸取了 perl 的正则表达式, python 的简单性可读性,smalltalk 的纯面向对象语法和单继承,LISP 的无穷嵌套的语法,Java的线程…
|
[b]Page 14 [/b][b]上手[/b][b][/b]
XP
Cmd
|
[b]C:Documents and SettingsAdministrator>ruby -v[/b]
[b]ruby 1.8.6 (2007-09-24 patchlevel 111) [i386-mswin32][/b]
|
[b]第一种方式:[/b][b]ruby[/b][b]命令[/b][b][/b]
|
[b]C:Documents and SettingsAdministrator>ruby -e 'print "hello world"'[/b]
[b]hello world[/b]
|
[b]
[/b]
ruby 运行ruby;
-e 执行后面的ruby脚本程序;
print 打印显示;
hello,world 要输出的内容。
[b]第二种方式:[/b][b]irb[/b][b]交互执行[/b][b][/b]
|
[b]C:Documents and SettingsAdministrator>irb[/b]
[b]irb(main):001:0> print "hello world"[/b]
[b]hello world=> nil[/b]
[b]irb(main):002:0> exit[/b]
|
exit: 退出irb交互式环境
[b]第三种方式:创建[/b][b]ruby[/b][b]脚本[/b][b][/b]
|
[b]C:Documents and SettingsAdministrator>copy con helloworld.rb[/b]
[b]print "hello world"[/b]
[b]print "3*7=",3*7[/b]
[b]^Z[/b]
[b]已复制 1 [/b][b]个文件。[/b]
[b][/b]
[b]C:Documents and SettingsAdministrator>helloworld.rb[/b]
[b]hello world3*7=21[/b]
|
[b]
[/b]
[b]Page 17 [/b]IDE
¨ Eclipse + RDT(Ruby Development Tools)
¨ FreeRIDE+SciTE
1.在SciTE编辑Ruby代码;
2.保存为 [b].rb[/b]文件;
3.菜单栏,工具->运行或者F5;
[b]Page 18 [/b][b]语法[/b][b][/b]
[b]1. [/b][b]注释[/b][b][/b]
单行注释 # 多行注释 =begin =end
Ruby的内嵌文档(Rdoc)注释,用ri命令从源文件中产生文档。
Rdoc内嵌在ruby代码之中的,可以转换为html文档。
ri命令,用来查看函数说明、类说明。函数说明、类说明应该放置在=begin和=end之中。注意:“=begin”一定要写在行首,也就是说,这一行前六个字符是“=begin”,之前不允许有空格。
[b]2. [/b][b]分行[/b][b][/b]
用分号;表示语句结束。
一行多个语句,用分号隔开,最后一个语句,分号可以省略,换行符表示一行结束。
语句太长,可以在行末用符号 ,表示续行。
[b]3. [/b][b]分隔符[/b][b][/b]
|
名称
|
符号
|
用途
|
|
分号
|
[b];[/b]
|
用来分隔一行中的多个语句
|
|
圆括号
|
[b]( )[/b]
|
提高优先级;定义方法时容纳参数列表
|
|
空格
|
[b][/b]
|
分隔字符;在可省略()的地方,代替()
|
|
逗号
|
[b],[/b]
|
隔开多个参数
|
|
点
|
[b].[/b]
|
将对象与它的方法隔开
|
|
紧连的两个冒号
|
[b]::[/b]
|
域作用符,将模块(类)与它的常量隔开
|
[b]4. [/b][b]关键字[/b][b][/b]
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的语法定义。
[b]5. [/b][b]运算符[/b][b][/b]
[b]6. [/b][b]标识名:[/b][b][/b]
常量,变量,方法,类和模块;
大小写敏感;
标识名第一个字符表明这个名字的用法。
|
局部变量、方法参数和方法名称
|
以小写字母开头或者下划线开头;
|
|
类名、模块名和常量
|
用大写字母开头。
|
|
全局变量
|
以美元符为前缀$;
|
|
实例变量
|
以@开头;
|
|
类变量
|
用@@开头;
|
词首字母后面可以是字母、数字和下划线的任意组合;
@后面不可以直接跟数字。
Ruby程序代码用7位ACSII码来表示,通过语言扩展来支持 EUC,SJIS或UTF-8等8位编码系统。Ruby2.0版本将支持16位的Unicode编码。
[b]7. [/b][b]类库[/b][b][/b]
可以直接使用:
i) 关键字;
ii) require或者include包含的类库中的类、方法;
iii)从父类中继承得到的方法。
|
puts
|
每个参数后自动换行
|
|
print
|
不自动换行,换行用”n”
|
|
printf
|
按格式输出,不自动换行
|
|
gets
|
从键盘或文件中读入数据
|
|
[b]C:Documents and SettingsAdministrator>ruby -e 'puts "hello","world"'[/b]
[b]hello[/b]
[b]world[/b]
|
|
[b]C:Documents and SettingsAdministrator>ruby -e 'printf "number:%f",3.2'[/b]
[b]number:3.200000[/b]
|
注意:printf的参数之间用逗号隔开。
|
[b]C:Documents and SettingsAdministrator>ruby -e ' printf "number:%4.3f,string %s[/b]
[b]",1.5,"hello world"'[/b]
[b]number:1.500,string hello world[/b]
|
[b]
[/b]
[b]8. [/b][b]数据类型[/b][b][/b]
|
类型
|
分类
|
说明及示例
|
|
数字
|
整数型
|
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
|
|
正则表达式
|
|
|
[b]9. [/b][b]赋值运算[/b][b][/b]
交换变量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
[b]10. [/b][b]条件运算[/b][b][/b]
|
==
|
等于
|
!=
|
不等于
|
|
eql?
|
比较两个对象的值、类型是否相等
|
equal?
|
比较两个对象在内存中地址是否相同
|
|
<
|
小于
|
>
|
大于
|
|
<=
|
小于等于
|
>=
|
大于等于
|
|
=~
|
匹配正则表达式
|
!~
|
断言不匹配正则表达式
|
|
===
|
右边的对象在左边区间内
puts(0..9)===3.14 #true puts('a'..'f')==='c' # true
|
<=>
|
比较两个对象大小,大于1,等于0,小于-1.
|
Ruby里,nil和false为假,其它都为真。
[b]11. [/b][b]判断语句[/b][b][/b]
|
[list=1]
[*]单行if语句[/*][/list] |
if then end
|
|
( ) if
|
|
[list=1]
[*]多行if语句[/*][/list] |
if elsif else end
|
|
[list=1]
[*]unless条件语句[/*][/list]
|
unless
|
|
if not
|
|
[list=1]
[*]case分支条件语句[/*][/list]
|
case
when
when
else
end
|
[b]
[/b]
[b]12. [/b][b]循环语句[/b][b][/b]
|
单行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
|
|
[b]C:Documents and SettingsAdministrator>irb[/b]
[b]irb(main):001:0> 1.upto(9){|i| print i if i<7}[/b]
[b]123456=> 1[/b]
[b]irb(main):002:0> 9.downto(1){|i|print i if i<7}[/b]
[b]654321=> 9[/b]
[b]irb(main):003:0> (1..9).each {|i| print i if i<7}[/b]
[b]123456=> 1..9[/b]
[b]irb(main):004:0> 0.step(11,3) {|i| print i}[/b]
[b]0369=> 0[/b]
|
13. 异常
Java
try…catch…finally…throw
Ruby
begin/end…rescue…ensure…raise
retry可以用在rescue中。可以只用rescue或ensure,两者都使用时,rescue必须在ensure前。
14. 线程
当前1/4页 [b]1[/b][url=http://www.1sucai.cn/article/16497_2.htm]2[/url][url=http://www.1sucai.cn/article/16497_3.htm]3[/url][url=http://www.1sucai.cn/article/16497_4.htm]4[/url][url=http://www.1sucai.cn/article/16497_2.htm]下一页[/url][url=http://www.1sucai.cn/article/16497_all.htm]阅读全文[/url]