
Ruby学习
娃娃鸭
这个作者很懒,什么都没留下…
展开
-
娃娃鸭学Ruby-19、字面量和关键字字面量
表达式就是一块Ruby 代码。在许多语言区分低层的表达式和高层的语句,如条件和循环Ruby 表达式和语句之间并没有清晰的界限。字面量和关键字字面量某些Ruby关键字是基本表达式,可以把它们当作关键字字面量或特殊形式的变量引用: nil 求值为nil,属于NilClass类true TrueClass类的单例实例,代表了布尔值为true的对象...原创 2011-04-13 08:54:43 · 138 阅读 · 0 评论 -
娃娃鸭学Ruby-8、程序的编码
在最底层,Ruby程序是采用ASCII字符集编码的。默认情况下,Ruby解释器假定Ruby源代码是采用ASCII进行编码的,但Ruby程序并不是必须要采用ASCII编码方式。可以采用多种编码1、指定程序所使用的编码默认编码:ASCII在Ruby1.8里,可使用-k命令行来指定一个不同的编码,采用-Ku选项来调用Ruby解释器,运行一个采用UTF-8编码的包含了Unico...原创 2011-04-01 09:18:34 · 157 阅读 · 0 评论 -
娃娃鸭学Ruby-7、文件结构
文件结构的规则1、如果一个Ruby程序包含有"shebang"注释,那么该注释是第一行。#! 注释 为了指示(Unix类)操作系统如何执行该文件的。2、如果一个Ruby程序包含一个"coding"注释,而且不包含"shebang"注释,那么该"coding"注释就应该出现在第一行;否则,由于有"shebang"注释必须出现在第一行,所以"coding"注释就只能出现在第二行。3原创 2011-03-31 18:52:55 · 94 阅读 · 0 评论 -
娃娃鸭学Ruby-6、句法结构
[b]6.1表达式[/b]初级表达式数字和字符串字面量就是初级表达式特定关键字:true false nil self对变量的引用也是初级表达式,对它们进行求值的结果就是指向的变量的值。复合表达式[1,2,3] #数组 {1=>"one",2=>"two"} #Hash1..3 # A Range literal操作符用于对多个值进行计算,通过操作符来...原创 2011-03-31 12:04:31 · 76 阅读 · 0 评论 -
娃娃鸭学Ruby-5、空白符
空白符包括:空格符、制表符和换行符,它们本身并不是标记,而是用于分隔不同的标记,以免这些标记合并成一个标记。[b]注意:有时候的空白符是必须的,还有一些实际上是被禁止的。[/b][b]1、作为语句终结符的换行符[/b]C和Java每个语句必须以分号结尾。在Ruby中,也可以用分号来终结语句,但这并不是必须的。只有当你试图在一行代码里面放置多条语句时,才须要使用分号分隔它们。...原创 2011-03-30 08:55:20 · 121 阅读 · 0 评论 -
娃娃鸭学Ruby-4、关键字
太多。。。----------------------------------------=begin =end #两个结合使用多行注释__END__ #单独出现在一行(没有任何前置或后置的空白),那么它将标示程序的结束(同时也是数据区的开始)。注意:关键字可以加上@,@@或$,使用,还可以做为方法名,但必须结合一个对象显式的调用它们。建议不要...原创 2011-03-29 19:29:10 · 89 阅读 · 0 评论 -
娃娃鸭学Ruby-3、标识符
一个标识符就是一个名字。标识符由字母、数字和下划线字符组成,但是不能以数字开头。不能包含空白符或非打印字符,不能包括标点符号。以从A到Z这26个大写字母开头的标识符是常量。类和模块名则必须以大写字母开头,否则会报错。ix2old_value_internal #PI #常量按照惯例,非常量的多字节标识符以下划线分隔多个字节,如"like_this"; ...原创 2011-03-29 18:39:10 · 112 阅读 · 0 评论 -
娃娃鸭学Ruby-2、字面量
字面量指那些直接出现在Ruby源代码里的值。包括数字、文本字符串及正则表壳式等。11.0'one'"two"/three/原创 2011-03-29 18:37:39 · 171 阅读 · 0 评论 -
娃娃鸭学Ruby-1、注释
1、注释注释以#字符开头并持续到该行结束如果#字符出现在一个字符串或正则表达式字面量里,那么它将作为此字符串或正则表达式的一部分而非引入一段注释。# This entire line is a commentx="#This is a string" y=/#This is a regular expression/ 以上两个不是注释2、嵌入式文档多行注释风格。...原创 2011-03-29 09:16:21 · 101 阅读 · 0 评论 -
娃娃鸭学Ruby-9、Ruby程序的运行
Ruby程序的运行Ruby是一门脚本语言,意味着Ruby程序就是待执行的语句的列表或脚本。默认情况下,语句按照其出现顺序依次的执行。在Ruby中不存在一个作为程序运行入口点的main方法。Ruby接受一个待执行语句的脚本,然后从第一行代码开始一直执行到最后一行。常见的作法是指定一个包含脚本的文件名,Ruby解释器会读取文件并执行其中的脚本,它首先执行任何BEGI...原创 2011-04-01 12:32:38 · 159 阅读 · 0 评论 -
娃娃鸭学Ruby-10、数字
Ruby中所有的值都是对象。继承关系 Numeric | ________________________|______________...原创 2011-04-02 21:00:48 · 108 阅读 · 0 评论 -
娃娃鸭学Ruby-17、True、False和Nil
[b]True、False和Nil[/b]true,false 和nil是Ruby的关键字truefalsenil是一个保留值,用于表示没有值Singletontrue是TrueClass的一个单键实例false FalseClassnil NilClassnil值检测o==nil o.nil?2011-4-7 20...原创 2011-04-12 09:09:03 · 168 阅读 · 0 评论 -
娃娃鸭学Ruby-16、符号
[b]符号Symbols[/b]Ruby解释器的典型实现会维护一个符号表(symbol table),在这个表中,存储了其所知晓的所有类、方法及变量的名称。通过一个方法名在符号表中的位置来对其进行引用。将相对开销较大的字符串操作转化为一个开销较小的整数操作。:symbol:"symbol" #以上两相同:'another long sysmbol's="str...原创 2011-04-11 09:10:33 · 107 阅读 · 0 评论 -
娃娃鸭学Ruby-15、范围
[b]范围Ranges[/b]表示位于一个开始值和一个结束值之间的一些值。开始和结束值之间放置二三个点,如果使用两个点,该范围包含边界超过三个点,结尾点不包含在内1..10 #包含101.0...10.0 #不包含10.0include?方法测试一个值是否被包含在一个范围内cold_war=1945..1989cold_war.include?birthda...原创 2011-04-08 09:20:05 · 92 阅读 · 0 评论 -
娃娃鸭学Ruby-14、哈希
[b][size=large][color=red]哈希[/color][/size][/b]键值对 映射(map)关联数组numbers=Hash.newnumbers["one"]=1numbers["two"]=2numbers["three"]=3sum=number["one"]+number["two"][b]1、哈希字面量[/b]...原创 2011-04-07 20:49:12 · 120 阅读 · 0 评论 -
娃娃鸭学Ruby-13、数组
[b]数组[/b] 一个数组就是一系列的值,可以通过这些值在该序列中的位置或索引来访问它们。Ruby中 数组的第一个值的索引为0 size和length方法返回一个数组的元素个数, 最后一个元素的索引是size-1 负索引从数组的末尾开始计数 -1 表示数组的最后一个元素,倒数第二个为-2 越界 返回nil,不抛出异常Ruby数组是无...原创 2011-04-07 09:18:35 · 99 阅读 · 0 评论 -
娃娃鸭学Ruby-12、文本二
[b]5、对字符串进行迭代[/b]Ruby1.8 String 类 each方法,Enumerable模块 []Ruby1.9 取消了each方法,不再包含Eumerable模块。 取代的: each_byte each_char each_lines="¥1000"s.each_char{|x| print "#{x} ...原创 2011-04-06 20:55:44 · 99 阅读 · 0 评论 -
娃娃鸭学Ruby-11、文本(二)
[b]2、字符字面量[/b]字符前面加一个问号的方式表示单个字符构成的字面量,不需要使用任何形式的引号?A?"??Ruby 1.8 ?A=65Ruby 1.9 字符是长度为1的字符串因此或以Unicode码点[b]3、字符串操作符[/b]+planet="Earth""Hello"+" "+planet # Hello Earth...原创 2011-04-06 17:12:34 · 99 阅读 · 0 评论 -
娃娃鸭学Ruby-11、文本
Ruby使用String类的对象表示文本。字符串是可变的对象 定义了 提取字符串、插入和删除文本,搜索及替换等操作1、字符串字面量 由单引号引用的字符串字面量 被单引号所引用的字符串是形式最简单的字符串字面量,单引号之间的文本就是字符串的值。 'This is a simple Ruby string literal'要用到单引号('),前面放置一反斜线,...原创 2011-04-05 20:05:07 · 119 阅读 · 0 评论 -
39、代码块的语法
代码块的语法1.upto(10) {|x| puts x}1.upto(10) do |x| puts xend1.upto(10){|x| puts x}代码块的值一般来说,不应该使用return关键字来从一个代码块中返回。array.collect do |x|next 0 if x==nilnext x,x*xend不带Nex...原创 2011-05-30 12:26:10 · 170 阅读 · 0 评论 -
38、迭代和并发修改
迭代和并发修改Ruby的核心集合类都是直接对当前的对象集合进行迭代,而不是先为自己建立这些对象的私有拷贝或“快照”,然后再在这些拷贝或“快照”上进行迭代,而且在被迭代的时候,这些集合类不会试图去检测或防止对集合的并发修改。多线程调用时,修改了迭代内容可能会出现意想不到的事情。2011-4-27 14:42 danny...原创 2011-05-29 18:00:17 · 93 阅读 · 0 评论 -
娃娃鸭学Ruby-27、Unless
Unlessunless,作为一个语句或修饰符,和if恰好相反:当且仅当与其关联的表达式的值为false或nil,它才会执行相应的代码。unless condition codeendunless condition codeelse codeends=unless o.nil? o.to_sends=unless o.nil? ...原创 2011-04-21 11:04:37 · 111 阅读 · 0 评论 -
娃娃鸭学Ruby-26、作为修饰符的if
[b]作为修饰符的if[/b]采用if的普通语句形式时,Ruby的语法要求其结尾必须有一个end关键字if expression then code end而改写成:[b]code if expression[/b]puts message if messgeif的优先级非常低y=x.invert if x.respond_to?:inverty=(...原创 2011-04-20 09:09:01 · 118 阅读 · 0 评论 -
娃娃鸭学Ruby-25、If
ifif 是最简单的条件式,具有多种形式if expression codeend ---------------------------------------- expression的值不是false或nil运行可以有关键字 thenif x原创 2011-04-19 13:17:44 · 98 阅读 · 0 评论 -
娃娃鸭学Ruby-24、操作符
操作符在Ruby语言中,一个操作符是一个标记。操作数本身是表达式操作符的元数 指它的操作数的个数操作符的优先级多个同样优先级的操作符,求值顺序由操作符的结合性来决定。结合性 “L" 表示 从左到右进行求值 ”R" 表示 从右到左进行求值 "N"表示 不具有结合性大多数算术操作符都是左结合的。求幂操...原创 2011-04-17 12:01:20 · 152 阅读 · 0 评论 -
娃娃鸭学Ruby-23、赋值
赋值一个赋值表达式可以为一个或多个左值(lvalue)指定一个或多个值。左值 可以出现在一个赋值操作符左侧的东西。在Ruby中变量、常量、属性及数组元素是左值。在Ruby中三种不同形式的赋值表达式。x=1x,y,z=1,2,3 # set x to 1,y to 2 ,z to 3x=y=0 #从右到左的顺序依次求值幂等赋值操作不是幂等的。...原创 2011-04-16 22:02:05 · 152 阅读 · 0 评论 -
娃娃鸭学Ruby-22、方法调用
[b]方法调用[/b]方法调用由四部分组成: 一个任意的表达式,它的值就是将要在其上调用该方法的对象 。 .或:: 被调用的方法名称 将要传递给该方法的参数值。参数列表可以置于一对圆括号中,可选 一个可选的代码块, 位于一对花括号或一个do/end中。 puts "hello world" Math.sqrt(2) # message.leng...原创 2011-04-16 13:42:43 · 115 阅读 · 0 评论 -
娃娃鸭学Ruby-21、常量引用
常量引用除了值在运行期间保持不变外,常量类似于变量。Ruby解释器并不保证常量的常量性,修改常量的值,发出一警告除了以大写字母开头之外,常量的名字看起来类似变量的名字按惯例 大多数常量名都是全部大写,并且使用下划线来分隔单词 LIKE_THISRuby的类和模块名也是常量,惯例:采用驼峰格式 LikeThisCM_PER_INCH=2.54CM_PER...原创 2011-04-15 22:31:46 · 133 阅读 · 0 评论 -
娃娃鸭学Ruby-20、变量引用
变量引用一个变量就是一个值的名字。通过赋值表达式可以创建变量并对其赋值。当一个变量名不是出现在赋值操作的左侧时,它就是一个变量引用表达式,而且会被求值成该变量的值。one=1.0 # 赋值one # 求值 1.01、未初始化的变量使用变量前对其初始化有些情况下,允许你使用没有被初始化的变量。类变量 在使用类变量之前,必须对其进行赋值。未...原创 2011-04-15 09:01:52 · 128 阅读 · 0 评论 -
娃娃鸭学Ruby-28、Case
Casename= case where x==1 then "one" where x==2 then "two" where x==3 then "three" where x==4 then "four" else "many" end同if ...原创 2011-04-21 22:08:10 · 111 阅读 · 0 评论 -
娃娃鸭学Ruby-29、?:操作符
?:操作符def how_many_messages(n) "You have " +n.to_s +(n==1 ? " message.":" messages. ")end2011-4-19 13:30 danny原创 2011-04-22 09:08:17 · 103 阅读 · 0 评论 -
37、外部迭代器
外部迭代器iterator=9.downto(1) begin print iterator.next while true rescue StopIteration puts "...blastoff!"end987654321...blastof!=> niliterator=9.downto(1) loop do print...原创 2011-05-28 11:56:12 · 123 阅读 · 0 评论 -
娃娃鸭学Ruby-36、枚举器
枚举器枚举器是类Enumeralbe::Enumerator的实例可以用new直接实例化,但通常情况下使用Object类的to_enum或同义词enum_for方法s="hello"s.enum_for(:each_char).map{|c| c.succ} #=>["i","f","m","m","p"]enumerator=3.timese原创 2011-05-26 13:38:46 · 91 阅读 · 0 评论 -
娃娃鸭学Ruby-35、编写自定义的迭代器
自定义的迭代器可调用一个与方法调用相关联的代码块def twice yield yieldenddef sequence(n,m,c) i=0 while(i sequence(3,5,1){|y| puts y}1611=> nil更复杂代码, 迭代器内部使用另一迭代器def circle(r,n) n.t...原创 2011-05-06 21:28:48 · 104 阅读 · 0 评论 -
娃娃鸭学Ruby-34、可枚举的对象
可枚举的对象Array、Hash、Range及许多其他类都定义了each迭代器[1,2,3].each{|x| print x}# prints "123"(1..3).each{|x| print x} # prints "123"Ruby的IO类也定义了一个eachFile.open(filename) do |f| f.each{|line| print l...原创 2011-04-26 22:18:14 · 125 阅读 · 0 评论 -
娃娃鸭学Ruby-33、迭代器
虽然可用while,until和for循环但还是更倾向于用迭代器3.times{puts "thank you!"data.each{|x| puts x}[1,2,3].map{|x| x*x}factorial=12.upto(n) {|x| factorial*=x} times,each,map,upto都是迭代器yield语句就是这些迭代器背后复杂...原创 2011-04-26 09:39:30 · 175 阅读 · 0 评论 -
娃娃鸭学Ruby-32、for/in循环
For/in循环for或for/in循环可对一个枚举对象(比如数组)的元素进行迭代。for var in collection do bodyendvar是一个变量或一个由逗号分隔的变量列表,collection是一个具有each迭代器方法的对象。array[1,2,3,4,5] for element in array puts element...原创 2011-04-25 09:14:14 · 146 阅读 · 0 评论 -
娃娃鸭学Ruby-31、作为修饰符的while和until
作为修饰符的while和untilx=0puts x=x+1 while x原创 2011-04-23 22:49:35 · 107 阅读 · 0 评论 -
娃娃鸭学Ruby-30、whie和unitl
While和untilwhile 当某个特定条件为真until 直到某个条件为真x=10while x>=0 do puts x x=x-1endx=0 until x>10 do puts x x=x+1end注意: while或until循环中的关键字do类似于if语句的关键字then,只要在循环条件和循环体之间存在...原创 2011-04-22 23:56:11 · 112 阅读 · 0 评论 -
娃娃鸭学Ruby-18、对象
对象ObjectsRuby是纯粹的面向对象的语言:所有的值都是对象,而且没有基本类型和对象类型的区别。所有对象都继承一个Object类,共享此类中的方法1、对象引用在Ruby中使用对象时,其实是在使用对象的引用。s="Ruby"t=s #只是引用,t和s指向同一个值t[-1]="" # 修改t 同时修改sprint s # "Rub"t="Java...原创 2011-04-12 12:31:14 · 98 阅读 · 0 评论