07 2012 档案

Ruby 实现迭代器
摘要:Ruby的迭代器只不过是可以调用block的方法而已。Ruby的block不是传统意义上的、将语句组织在一起的一种方式。首先,block在代码中只和方法调用一起出现:block和方法调用的最后一个参数处于同一行,并紧跟在其后(或者参数列表的右括号的后面)。其次,在遇到block的时候并不立刻执行其中的代码。Ruby会记住block出现时的上下文(局部变量、当前对象等)然后执行方法调用。在方法内部,block可以像方法一样被yield语句调用。每执行一次yield,就会调用block中的代码。当block执行结束时,控制返回到紧随yield之后的那条语句。我们来看个简单的例子.def three 阅读全文

posted @ 2012-07-19 23:01 tim_sheng 阅读(736) 评论(0) 推荐(0) 编辑

敏捷测试与普通测试的区别
摘要:1.项目相当于开发与测试并行,项目整体时间较快。 2.模块提交较快,测试时较有压迫感。 3.工作任务划分清晰,工作效率较高。 4.项目规划要合理,不然测试时会出现复测的现象,加大工作量。 5.发现问题需跟紧,项目中人员都比较忙,问题很容易被遗忘。 6.耗时、或较难解决对项目影响不大的问题一般会遗留到下个阶段解决。 7.发现BUG能够很快的解决,对相关的模块的测试影响比较小。 8.版本更换比较勤,影响到测试的速度。 9.要多与开发沟通。 10.要注意版本的更新情况。 11.测试人员几乎要参加整个项目组的所有会议。 阅读全文

posted @ 2012-07-16 14:17 tim_sheng 阅读(454) 评论(0) 推荐(0) 编辑

Ruby容器
摘要:所谓容器是指含有一个或多个对象引用的对象。在开始实现之前,我们需要决定如何在SongList对象中存储歌曲列表。目前有3个明显的选择:(1)使用Ruby的Array(数组);(2)使用Ruby的Hash(散列表);(3)自定义列表结构。数组类含有一组对象引用。每个对象引用占据数组中的一个位置,并由一个非负的整数索引来标识。可以通过使用字面量(literal),或显示地创建Array对象,来创建数组。字面量数组(literal array)只不过是处于方括号中的一组对象。a = [3.14159, "pie", 99]a.class ... 阅读全文

posted @ 2012-07-15 14:58 tim_sheng 阅读(731) 评论(0) 推荐(0) 编辑

Ruby变量
摘要:每个变量保存一个对象的引用。person = "Tim"person.object_id ->938678person.class ->Stringperson ->"Tim"第一行代码,Ruby使用值“Tim”创建了一个String对象。这个对象的一个引用(reference)被保存在局部变量person中。接下去的快速检查展示了变量具备字符串的特性,它具有对象的ID,类和值。那么,变量是一个对象吗?在Ruby中,答案是“不”,变量只是对象的引用。对象漂浮在某处一个很大的池中(大多数时候是堆,即heap中),并由变量指向它们。pers 阅读全文

posted @ 2012-07-15 14:41 tim_sheng 阅读(404) 评论(0) 推荐(0) 编辑

Ruby 访问控制
摘要:“protected”和“private”之间的区别很微妙,如果方法是保护的,它可以被定义了该方法的类或其子类的实例所调用。如果方法是私有的,它只能在当前对象的上下文中被调用--不可能直接访问其他对象的私有方法,即便它与调用者都属同一个类的对象。Ruby和其他面向对象语言的差异,还体现在另一个重要的方面。访问控制实在程序运行时动态判定的,而非静态判定。只有当代码试图执行受阻的方法,你才会得到一个访问违规。有两种不同的方式定义函数的访问级别首先class MyClass def method1 #default is 'public' #... end protected #su 阅读全文

posted @ 2012-07-15 14:13 tim_sheng 阅读(375) 评论(0) 推荐(0) 编辑

Ruby类变量和类方法
摘要:类变量被类的所有对象所共享,它与类方法相关联,对一个给定的类来说,类变量只存在一份拷贝。类变量由两个@符开头,例如@@count。与全局变量和实例变量不同,类变量在使用之前必须被初始化。通常,初始化就是在类定义中的简单赋值。例如,我们的点唱机可能希望记录每首歌被播放的次数。这个数目可能是Song对象的一个实例变量。当一首歌被播放时,实例中的值增加。但是,假如我们还想要了解下一共播放了多少首歌。通过搜索所有Song对象并累加它们的播放次数,或者冒天下之大不韪使用全局变量来完成统计;或者,让我们使用类变量。class Song @@plays = 0 def initialize(name.art 阅读全文

posted @ 2012-07-14 21:39 tim_sheng 阅读(8221) 评论(0) 推荐(0) 编辑

Ruby 可写的属性
摘要:有些时候,你需要能够在一个对象外部设置它的属性。在类如C++和Java等语言中,你需要用setter方法来完成这个任务。class JavaSong{ //Java代码 private Duration _duration; public void setDuration(Duration newDuration){ _duration = newDuration;}}s = new JavaSong(....);s.setDuration(length);在Ruby中,访问对象属性就像访问变量一样。当你想要设置某个属性的值时,对这些变量直接赋值似乎更自然些。在Ruby中,你可以通过创建一个名 阅读全文

posted @ 2012-07-13 10:32 tim_sheng 阅读(311) 评论(0) 推荐(0) 编辑

Ruby 继承和消息
摘要:继承允许你创建一个类,作为另一个类的精炼(refinement)和特化(specialization)。例如,在我们的自动点唱机系统中,有“歌曲”这一概念,被封装在Song类中,然后,随着市场的成长,我们需要提供卡拉OK的支持。一首卡拉OK歌曲和其他歌曲没什么两样(它只是没有主唱的音轨,对此我们不必关心)。不过,它还包括对于的一套歌词以及时间信息。当我们的自动点唱机在播放一首卡拉OK歌曲时,歌词应该随音乐滚动显示在点唱机前的屏幕上。解决这个问题的一种方法是定义一个新的类KaraokeSong,就是Song加上歌词。class KaraokeSong *Song:My Way--Sinatra. 阅读全文

posted @ 2012-07-11 18:08 tim_sheng 阅读(2154) 评论(0) 推荐(0) 编辑

Ruby 读/写文件
摘要:Ruby有一个完备的I/O库(I/O==input/output简称,输入输出端口)。已经碰到过了两个用来输出的方法。puts输出它的参数,并在每个参数后面添加回车换行符。print也输出它的参数,但没有添加回车换行符。它们都可以用来向任何I/O对象进行输出,但在默认情况下,它们输出到标准输出。另外一个常用的输出方法是printf,它在一个格式化字符串的控制下打印出它的参数(就象c或Perl中的printf)。printf("Number:%5.2f,\nString:%s\n",1.23,"hello")输出结果: Number:1.23, Strin 阅读全文

posted @ 2012-07-10 22:17 tim_sheng 阅读(1764) 评论(0) 推荐(0) 编辑

Ruby Block和迭代器
摘要:我们来简单地描述Ruby的一个独特特性。Block,一种可以和方法调用相关联的代码块,几乎就像参数一样。这是一个不可思议的功能强大的特性。可以用Block实现回调(但它比Java的匿名内部(anonymous inner)类更简单),传递一组代码(但它远比c的函数指针灵活),以及实现迭代器。Block只是在花括号或者do...end之间的一组代码。{puts "Hello"} #this is a blockdo ### club.enroll(person) #and so is this person.socialize #end ###为什么有两种分界符?部分原因是有 阅读全文

posted @ 2012-07-10 14:25 tim_sheng 阅读(1513) 评论(0) 推荐(0) 编辑

Ruby 正则表达式
摘要:正则表达式的内建支持通常只限于脚本语言如Ruby,Perl和awk等,这是一个耻辱:尽管正则表达式很神秘,但它是一个强大的文本处理工具。通过内建而不是通过程序库接口来支持它,有很大的不同。正则表达式只是一种指定字符模式的方法,这个字符模式会在字符串中进行匹配。在Ruby中,通常在斜线之间(/pattern/)编写模式(pattern)来创建正则表达式。同时,Ruby就是Ruby,正则表达式是对象并且可以当作对象来操作。比如,可以使用如下的正则表达式来编写模式,它会匹配包含Perl或Python的字符串。/Perl|Python/前面那个斜线界定了这个模式,模式由要匹配的两个子字符串组成,它们被 阅读全文

posted @ 2012-07-09 22:34 tim_sheng 阅读(544) 评论(0) 推荐(0) 编辑

Ruby 控制结构
摘要:Ruby具有所有常见的控制结构,如if语句和while循环。Java、C和Perl 程序员可能会对这些语句的程序体“缺乏花括号”不太适应。Ruby是使用end关键字来表明程序体的结束。if count>10puts "try again"elsif tries==3puts "You lose"elseputs "Enter a number"end同样地,while语句以end结束。while weight 3000puts "Danger, Will Robinson"end用语句修饰符重新编写了同样这个 阅读全文

posted @ 2012-07-09 14:12 tim_sheng 阅读(182) 评论(0) 推荐(0) 编辑

Ruby 数组合散列表
摘要:Ruby的数组(arrays)和散列表(hashes)是被索引的收集(indexed collections).两者都存储对象的集合,通过键(key)来访问。数组的键是整数。而散列表支持以任何对象作为它的键。数组和散列表会按需调整大小来保存新的元素。访问数组元素是高效的,但是散列表提供了灵活性。任何具体的数组或散列表可以保存不同类型的对象。使用数组字面量(array literal)--即方括号之间放一组元素--可以创建和初始化新的数组对象。有了数组对象,在方括号之间提供索引便可以访问单个元素,如下例所示,注意Ruby数组的索引从零开始。a=[1,'cat',3.14] #有三 阅读全文

posted @ 2012-07-07 23:09 tim_sheng 阅读(1297) 评论(0) 推荐(0) 编辑

Ruby的一些基本知识
摘要:创建字符串对象有多种途径,最常用的可能是使用字符串字面量(literals),即一组单引号或双引号之间的字符序列。这两种形式的区别在于,当构造字面量时,Ruby对字符串所做处理的多少有所不同。Ruby对单引号串处理得很少。除了极少的一些例外。键入到字符串字面量的内容就构成了这个字符串的值。Ruby对双引号字符串有更多的处理。首先,它寻找以反斜线开始的序列,并用二进制值替换它们。其中最常见的是\n,它会被回车换行符替换掉。当一个包含回车换行符的字符串输出时,\n会强制换行。puts "And good night, \nGrandma"输出结果:And good night, 阅读全文

posted @ 2012-07-05 22:41 tim_sheng 阅读(296) 评论(0) 推荐(0) 编辑

Ruby是一门面向对象语言
摘要:Ruby 是真正的面向对象语言。您所操作的每件东西都是对象,操作结果本身也是对象。编写面向对象的代码时,通常你得根据真实世界对概念进行建模。在这个过程中,要挖掘出需要在代码中所表达的事物种类。在点唱机系统(jukebox)中,“歌曲”的概念可能就是这么一个种类。在Ruby里,需要定义类(class)来表示实体。类是状态(state,比如歌曲名称)和使用这些状态的方法(method,可能是一个播放歌曲的方法)的组合。一旦建立了这些类,通常要为每个类创建若干个实例(instances)。“对象(object)”这个概念和“类的实体(class instance)”等同互用。在Ruby中,通过调用构 阅读全文

posted @ 2012-07-04 23:06 tim_sheng 阅读(446) 评论(0) 推荐(0) 编辑

导航

点击右上角即可分享
微信分享提示