The Declarative Programming Language - Ruby.ppt
《The Declarative Programming Language - Ruby.ppt》由会员分享,可在线阅读,更多相关《The Declarative Programming Language - Ruby.ppt(38页珍藏版)》请在麦多课文档分享上搜索。
1、The Declarative Programming Language : Ruby,范玉雷 中国人民大学WAMDM实验室 http:/,1、Ruby发展历史 2、Ruby优缺点 3、编程环境介绍 4、字符串、正则表达式、数组和哈希 5、控制结构 6、类、对象、方法和变量 7、异常处理 8、模块,发展历史,Ruby是一种解释型的方便快捷的面向对象脚本语言,并且是一种具有函数式及指令程序设计特性的新语言。由日本的Yukihiro Matsumoto于1993年2月24日首次发布的。 Ruby版本发展历史: 1995 12月-Ruby 0.95版本 1996 12月-发布Ruby 1.0版本 1
2、997 8月-发布Ruby 1.1版本 1998 12月-发布了安定版1.2和开发版1.3 2007 3月-发布了稳定版本1.8.6 最新版本:1.8.7(2008年) JRuby:类似Python的Jython,一个可于Java上执行Ruby的语言,支持Java的接口和类别。最新发布版为0.8.1(2005-04-11),与Ruby 1.8.2兼容。,Ruby优缺点,Ruby是面向对象的编程语言,追求“简便快捷的面向对象编程”。Ruby是解释型语言,不需编译即可快捷地编程。同时Ruby具有类似Perl的强大的文本处理功能。此外,还可以很方便地使用C语言来扩展Ruby的功能,因此可以把它当作各
3、种库的前端来使用。 缺点:因为Ruby是解释型语言,所以速度较慢,静态检查比较少。,优点: 解释性脚本语言 有直接呼叫系统调用的能力、强大的字符串操作和正则表达式 迅速和简便 无需变量声明、变量无类型、语法简单而坚实、自动内存管理 面向对象编程 任何事物都是一个对象、类、模块糅合、迭代器 多精度整数 数值可以为很大 异常处理模式 类似其他面向对象编程语言的异常处理机制 动态装载 线程,编程环境,在浏览器上试用:http:/ Ruby1.8.6: fxri - Interactive Ruby Help & Console控制台 SciTE文件编写,后缀名为“rb”,字符串、正则表达式、数组和哈
4、希,单引号 escape using “ escape using “ Thats right Thats right 双引号 “Seconds/day: #24*60*60“ Seconds/day: 86400 “#Ho! *3Merry Christmas!“ Ho! Ho! Ho! Merry Christmas! “This is line #$.“ This is line 3 puts “now is # def the(a) the + a end the(time) for all good coders.“now is the time for all good coder
5、s.,三种构建字符串字面值方法: %q/general singlequoted string/ %Q!general doublequoted string! general doublequoted string %QSeconds/day: #24*60*60 Seconds/day: 86400 string = END_OF_STRINGThe body of the stringis the input lines up toone ending with the sametext that followed the END_OF_STRING,正则表达式是类型Regexp的对象。
6、它们可以显式地用构造函数或使用字符值形式/pattern/ 和%rpattern来创建。 a = Regexp.new(s*az) /s*az/ b = /s*az/ /s*az/ c = %rs*az /s*az/ 使用Regexp#match(string) 或者用匹配操作符=(确定匹配)及 !(否定匹配)。 name = “Fats Waller“ name = /a/ 1 name = /z/ nil /a/ = name 1,a = 1, cat, 3.14 使用w%代替复杂的声明方式 a = %w ant bee cat dog elk a = ant, bee, cat, dog
7、, elk 可以通过=进行赋值 b = Array.new #直接创建Array对象。 b.class Array b.length 0 b0 = “second“ b1 = “array“ b “second“, “array“,用一对数字start, count来对数组进行索引。 a1, 2 cat, 3.14 使用Range对象或Range字面值来对数组进行索引:范围用“”和“”表示 a02 1, cat a02 1, cat,3.14 如果在 =操作符中下标索引为两个数字或者一个Range字面值,则原始数组内对应的一系列值将被替换为操作符右边的值。 a = 1, 3, 5, 7, 9
8、1, 3, 5, 7, 9 a2, 2 = cat 1, 3, “cat“, 9 a2, 0 = dog 1, 3, “dog“, “cat“, 9 a1, 1 = 9, 8, 7 1, 9, 8, 7, “dog“, “cat“, 9 a03 = “dog“, “cat“, 9 a56 = 99, 98 “dog“, “cat“, 9, nil, nil, 99, 98,哈希表:由key和value组成 h = dog = canine, cat = feline, donkey = asinine h.length 3 hdog “canine“ hcow = bovine h12 = d
9、odecine hcat = 99 h “cow“=“bovine“, “cat“=99, 12=“dodecine“,“donkey“=“asinine“, “dog“=“canine“,块:使用定义 或者使用begin/doend定义 简单的迭代: 1, 3, 5,7,9 .each |i| puts i 1 3 5 7 9 “H“, “A“, “L“.collect |x| x.succ “I“, “B“, “M“ 自定义迭代: def three_timesyieldyieldyieldendthree_times puts “Hello“ ,控制结构,Case语句 case abcd
10、ef when aaa, bbb print “aaa or bbbn“ when /def/ print “includes /def/n“ end 使用了字符串相等和正则表达式匹配,还可以使用的有数值相等、数值是否在规定范围内等。可以用来赋值。 leap = casewhen year % 400 = 0: truewhen year % 100 = 0: falseelse year % 4 = 0end,if语句 puts “Danger, Will Robinson“ if radiation 3000 if radiation 3000puts “Danger, Will Robi
11、nson“end if elsif elseend if song.artist = “Gillespie“ then handle = “Dizzy“elsif song.artist = “Parker“ then handle = “Bird“else handle = “unknown“end 可使用冒号:来替换then,使代码更简洁些。使用表达式进行赋值 handle = if song.artist = “Gillespie“ then “Dizzy“elsif song.artist = “Parker“ the“Bird“else“unknown“end,Unless语句 un
12、less song.duration 180 cost = 0.25elsecost = 0.35endcost = song.duration 180 ? 0.35 : 0.25,While语句 while weight 100 and num_pallets = 30pallet = next_pallet()weight += pallet.weightnum_pallets += 1end 两种等价形式的while语句 square = 2 while square 1000square = square*squareend square = square*square while s
13、quare 1000,Until语句 until play_list.duration 60 play_list.add(song_list.pop)end Until语句的简单表示法 a -=10 until a 100,循环迭代器 for song in songlistsong.play end songlist.each do |song| #等价形式song.play end,Break、Redo、 Next和Retry break 立即结束当前循环;然后跳出去执行循环后面的语句。 redo从这次循环体的头开始重新执行,但是不会在对条件进行运算或者从迭代中取下一个值。 next跳到本
14、次循环末尾,开始执行下一次循环while line = getsnext if line = /s*#/break if line = /END/ redo if line.gsub!(/(.*?)/) eval($1) end Retry语句就是个入场卷。它重新开始任何的迭代循环。for i in 1100print “Now at #i. Restart? “retry if gets = /y/end,类、对象、方法、变量,类 class end 对象 “gin joint“.length 9 “Rick“.index(“c“) 2 -1942.abs 1942 方法 defend,类
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
2000 积分 0人已下载
下载 | 加入VIP,交流精品资源 |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- THEDECLARATIVEPROGRAMMINGLANGUAGERUBYPPT
