¨ 解释执行: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. 判断语句
- 单行语句
then end
( )
- 多行语句
els end
- unless条件语句
unless
not
- 分支条件语句
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. 线程
延伸阅读
- 分支条件语句
- unless条件语句
- 多行语句
els end
最新评论