文章分类 - Ruby
摘要:In Ruby 1.8.7, there is no SciTE edit tool released together with the new Ruby version. Therefore we need to install this tool by ourselves.An Windows Installer SciTE download is on below page,http://opensource.ebswift.com/SciTEInstaller/scite-2.12.msi (2.97 megabytes)
阅读全文
摘要:建立歌曲目录和待播放歌曲的列表,他们都是容器(containers).容器:是指含有一个或多个对象引用的对象。目录和播放列表需要一组相似的方法:添加一首歌曲,删除一首歌曲,返回歌曲列表。播放列表可能还需要执行额外的任务,例如插播广告或者记录累计的播放时间。开发一个通用的SongList类,然后将其特化(specialize)为目录和播放列表类。如何在SongList对象中存储歌曲列表?1)使用Ruby的Array(数组)2)使用Ruby的Hash(散列表)3)自定义列表结构数组类含有一组对象引用。每个对象引用占据数组中的一个位置,并由一个非负的整数索引来标识。通过使用字面量(literal),
阅读全文
摘要:Song对象有内部的状态(例如歌曲名称和演唱者),这些状态是对象所私有的,即其他对象无法访问一个对象的实例变量。通常会定义一些方法来访问及操作对象的状态,让外部世界得以与之交互。一个对象的外部可见部分被称为其属性(attribute).对Song对象来说,需要找出歌曲的名称和演唱者(这样可以在歌曲播放时显示它们),以及时长(这样可以显示某种进度条)。C++ : 支持多继承,一个类可以有多于一个的直接父类,并继承每者的功能。Java和C# : 支持单继承,一个类只能有一个直接的父类。Ruby:Ruby类只有一个直接的父类,因此Ruby是一门单继承语言。 Ruby类可以从任何数量的mixin(类似
阅读全文
摘要:继承: 允许创建一个类,作为另一个类的精炼(refinement)和特化(specialization).歌曲 VS 卡拉OK区别:一首卡拉OK歌曲和歌曲没有什么两样,只是没有主唱的音轨,包括对应的一套歌词以及时间信息。定义一个新的类:KaraokeSong“< Song” 表示KaraokeSong是Song的子类(subclass),Song是KaraokeSong的超类(superclass).既KaraokeSong的父类是Song.class KaraokeSong < Song def initialize(name, artist, duration, lyrics)
阅读全文
摘要:表示歌曲的Ruby类,歌曲(名字,演唱者,时长)在Ruby程序中,initialize是一个特殊的方法。当调用Song.new创建一个新的Song对象时,Ruby首先分配一些内存来保存未初始化的对象,然后调用对象的initialize方法,并把调用new时所使用的参数传入该方法。每个对象都表示自己对应的歌曲,因此需要每个Song对象带有自己的歌曲名,演唱者和时长,所以需要将这些值作为实例变量保存在对象中。对象内的所有方法都可以访问实例变量,每个对象都有实例变量的一份拷贝。class Song def initialize(name, artist, duration) #接收3个参数,参数以小
阅读全文
摘要:Ruby有一个完备的I/O库。用来输出的方法:puts:输出它的参数,并在每个参数后面添加回车换行符。print: 输出它的参数,但没有添加回车换行符。printf: 在一个格式化字符串的控制下,打印出它的参数。printf("Number:%5.2f,\nString:%s\n",1.23,"nikey")告诉printf替换一个浮点数(最多允许5个字符,并且2个在小数点后面)和一个字符串。用来读取输入的方法:gets函数:它从程序的标准输入流中读取下一行。line = getsputs line
阅读全文
摘要:Block: 一种可以和方法调用相关联的代码块,几乎就像参数一样。可以使用block实现回调,以及实现迭代器。block只是在花括号或者do…end之间的一组代码。{ puts “Hello”} #单行block用花括号do #多行block用do…end club.enroll(person) person.socializeendblock与方法的调用相关联:把block的开始放在含有方法调用的源码行的结尾处实现关联。greet { puts “Hi” } #greet是方法,{ puts “Hi” }是block若方法有参数,它们出现在block之前。verbose_greet(“Dav
阅读全文
摘要:正则表达式:一种指定字符模式的方法,这个字符模式会在字符串中进行匹配。Ruby中,通常指斜线之间(/pattern/)编写模式来创建正则表达式。Sample:/Perl|Python/ #匹配包含Perl或Python的字符串。"|"是管道符,要么左边,要么右边。/P(erl|ython)/ #类似算术表达式/ab+c/ #模式中指定重复,匹配一个含有a,后面跟着一个或多个b,其后是c的字符串。/ab*c/ #匹配含有a,零个或多个b,然后是c的字符串。模式中匹配一组或者多组字符:字符类:\s #匹配空白字符(空格符,制表符,回车换行符等等)\d #匹配任何数字\w #匹配
阅读全文
摘要:控制结构:注:Ruby是使用end关键字表明程序体的结束的。 如果 if 或 while语句的程序体只是一个表达式, Ruby的语句修饰符可以只写出表达式,后面跟着 if 或 while 和条件。Test Code:number = 2if number<5 puts "hello, world."endnumber = 2puts "hello, world." if number <5
阅读全文
摘要:Ruby命名规则:名称的第一个字符显示这个名称如何被使用1)局部变量,方法参数,方法名称:必须以小写字母或下划线开始。2)全局变量:都有$符号为前缀。3)实例变量:以@符号开始。4)类变量:以@@符号开始。5)类名称,模块名称,常量: 必须以一个大写字母开始。数组(arrays)和散列表(hashes)Ruby的数组和散列表是被索引的收集(indexed collection).相同:两者都存储对象的集合,通过键(key)来访问。都可以保存不同类型的对象。不同:数组的键是整数,散列表支持以任何对象作为它的键。数组数组:a=[1,’cat’,3.14]访问: a[0]设置:a[2] = nil显
阅读全文
摘要:Getting StartedLoad the Watir libraryrequire 'watir' Open a browser (default: Internet Explorer)browser = Watir::Browser.new Open Browser at the specified URLbrowser = Watir::Browser.start("http://google.com") Go to a specified URLbrowser.goto("http://amazon.com") Close t
阅读全文
浙公网安备 33010602011771号