自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(33)
  • 收藏
  • 关注

变量一定要有类型吗(二)

变量一定要有类型吗(二)变量一定要有类型吗?不一定。在《The Ruby Way 2nd》一书中,1.2.3节 Constants, Variables, and Types“In Ruby, variables do not have types, but the objects they refer to still have types. ” 在Ruby中,变量没...

2007-03-01 07:05:38 319

变量一定要有类型吗(一)

先讨论一下Ruby是不是强类型。1).在《Beyond Java》[size=7]September 2005[/size] 一书 6.1.2节Typing 中,Bruce Tate举例 irb(main):015:0> "fish"+4 TypeError: cannot convert Fixnum into String fro...

2007-03-01 06:30:00 247

8.4 迭代器、代码块、闭包

先看一句代码:ruby 代码  (1..9).each {|i| print  i  if  i<7}    # =>123456   迭代器each 是数组类的一个方法;大括号{  }里的代码是代码块,简称块。你可以用大括号{  }将代码组织成块,也可以用 do…end将代码组织成块。大括号{  }的优先级高于do…end。我们来写一个最简单的块;ruby...

2007-02-13 06:25:50 100

8.3 正则表达式

一本入门小书,不想涉及正则表达式,但是正则表达式与Ruby语言联系如此紧密,总让人感觉绕不开它。所以匆匆结束字符串的介绍,边学边说正则表达式。正则表达式之强大、复杂,由来已久。自从1956年提出了“正则集代数”,正则表达式就逐渐被广泛地应用于操作系统,编程语言,算法设计,人工智能……现在,除了Perl这样支持强大正则表达式功能的语言之外,Java,JavaScript, C# 等语言都纷纷支持...

2007-02-13 06:13:53 114

8.2 再说字符串

一. 生成一个字符串字符串是String类的对象,一般使用字面值来创建。ruby 代码 #E8.2-1.rb       str1 = 'this is str1'    str2 = "this is str2"   str3 = %q/this is str3/    str4 = %Q/this is str4/    ...

2007-02-13 06:07:54 75

8.1 再说数组

一. 建立一个数组ruby 代码 #E8.1-1.rb       arr1=[]    arr2=Array.new   arr3=['4 ','5 ','6 ']       print arr1,  "\n"   print arr2,  "\n"   print arr3,  "\n"  运行结果:...

2007-02-13 06:03:44 84

7.4 require 和 load

程序 E7.3-1.rb中先写了Me模块,然后include  Me模块,实现了Mix-in功能,但是,这样没能做到代码复用。我将 Me模块写在文件 E7.4-1.rb中,将 Person类写在文件 E7.4-2.rb中,这时候 Student类如何使用 Me模块和 Person类呢?这里要用到require方法。看程序 E7.4-3.rb :ruby 代码 #E7.4-3.r...

2007-02-13 05:59:55 106

7.3 糅和(Mix-in) 与多重继承

糅和,也译作混合插入,也许就称作 Mix-in 比较合适。现实生活中,一个乒乓球不仅是球类物体,也是有弹性的物体。 C++ 支持多重继承,多重继承有时会导致继承关系的混乱,Java只提供了单继承,通过接口可以得到多重继承的优点,又没有多重继承的缺点。Ruby 也是单继承,不是通过接口,而是通过Mix-in 模块,来实现多重继承的优点。模块的第三个作用:实现了类似多重继承的功能。我们有一个St...

2007-02-13 05:55:26 189

7.1 模块 7.2 命名空间

7.1  模块我们常常把许多零散的小物件放在一个盒子里,或者放在一个抽屉里,这些小物件可能是铅笔,墨水,字典等学习用品,也有可能是不相关的几件物品。在程序中,相关的、不相关的代码的组合,叫作模块。一般情况下,我们总是把功能相关的代码放在一个模块里。把功能相关的程序代码放在一个模块里,体现了模块的第一个作用:可以被其它程序代码重复使用。看程序 E7.1-1.rb :ruby 代码 ...

2007-02-13 05:50:19 89

6.5 访问控制

在Ruby里,要读取,或是改变对象的属性,唯一的途径是调用对象的方法。控制了对方法的访问,也就控制了对对象属性的访问。控制对方法的访问,有三种方式:  访问控制 意义 ...

2007-02-13 05:43:25 75

6.3 实例变量、类变量、类方法

学习编程的过程,就是深化理解变量的过程。在面向对象编程中也不例外,这一节,我们继续深化理解变量。先把 Ruby 放在一边,从编程语言的视角来探讨变量。如果一个变量,第一次赋值后,就不再允许改变变量值,这样的变量称之为常变量,简称常量。就像数学分析中的常函数,y = 3 是一个平行于 x 轴,并且函数值总是为 3 的函数。常量名用大写字母开头。如果一个变量,在其作用域上的每一个执行点,都...

2007-02-13 05:28:00 221

6.4 单例方法

同一份设计蓝图(类),不同的实例对象,可以表现出不同的行为特征,这种(不牵涉继承的)多态性在Java 这样的静态语言里,通过方法重载得到具体实现。6.1节中我们分析知道了Ruby中的重载是指重写,Ruby 如何来反映不同实例对象的不同行为特征呢?在Ruby里,可以给具体的实例对象添加实例方法,这个方法只属于这个实例对象,我们把这样的方法称之为单例方法。看程序  E6.4-1.rb :ruby...

2007-02-13 05:16:00 114

6.2 增强父类方法

如果我们只是想增强父类的方法,而不是完全地替代它,就可以用关键字super指明。看程序  E6.2-1.rb :Person类的talk方法只是报告姓名。 Student类的talk方法用super来调用Person类的talk方法,报告姓名;随后又加上了一条语句,来表明身份。ruby 代码 #E6.2-1.rb    class Person         de...

2007-02-13 04:39:00 133

6.1 重载?重写

在Java 中,重载(overload)和重写(override)是用来表现多态性的两种重要方式。override 也有译作“覆盖”、“覆写”。Java 中称作“覆写”比较恰当。重载方法是指一个类中,方法名相同、参数列表不同的几个方法,调用时根据不同的参数调用不同的方法。方法重载与返回类型无关。覆写方法是指子类有一个方法,方法名、参数列表、返回类型与父类的某个方法完全一致。调用时会调用子类的方...

2007-02-13 04:11:00 69

5.5 一些编码建议

这里不是 Ruby语言的编码约定,只是建议,很少的一些建议。在语法正确的前提下,你可以按照自己的编码风格自由组织你的代码。一. 命名常量全用大写的字母,用下划线分割单词。例如:MAX, ARRAY_LENGTH。类名和模块名用大写字母开头的单词组合而成。例如:MyClass, Person。方法名全用小写的字母,用下划线分割单词。例如:talk, is_prime?。在Ruby里,有时将...

2007-02-13 03:37:16 104

5.4 蓝图可以改变吗? ——动态语言

Ruby 是动态语言,你可以改变 Ruby 程序的结构,功能,在Ruby程序运行中。方法、属性可以被加入或去除,新的类或对象可以被建立,新的模块可以出现。请看程序 E5.4-1.rb :ruby 代码 #   E5.4-1.rb        class Person          def talk        puts "Today is Satur...

2007-02-13 03:28:49 100

5.3 详解变量—— 动态类型

变量是什么?变量有哪些特征呢?学习编程的过程,就是深化理解变量的过程。先说变量是什么?变量是代号。在数学中,你写下一个小写的英文字母“ f ”,这个 f 可以是数字 5 ,也可以是一个函数式 f = n * n + 1 ,还可以是一个曲面,或者是一个逻辑蕴涵关系…数学里,我们把常用的符号约定俗成,比如π代表圆周率,∑表示求和。编程语言的产生,建立在数学的基础上。在汇编语言的时代,一条语句 ...

2007-02-13 03:22:34 239

5.1 为什么是Ruby? 5.2 Ruby会长久么?

5.1  为什么是Ruby?现在软件生产的代表语言是Java。但Java已老,在主流市场,虽然它还会将继续存在许多年。为什么说Java已老?很怀念Pascal的严谨、优美与高效。Java也一样,是静态语言,沉稳的同时注定了笨重,不善腾挪;而且Java是强静态语言,在需要简略的地方,依然沉稳笨重。仿佛一个绅士,在宴会大厅中彬彬有礼,在厨房里彬彬有礼,在卧室里仍然彬彬有礼。灵气沾不上Java,神来...

2007-02-13 03:16:29 94

4.5 多态

不同的子类继承一个父类,不仅子类和父类的行为有变异,而且子类彼此的行为也有差异,这就是多态。看程序 E4.5-1.rb ,接着4.3节的代码,添加如下:ruby 代码 class  Worker < Person        def talk        puts "I am a worker. my name is "+@name+", age is...

2007-02-13 03:07:52 75

4.4 继承

如果我们要写一个学生类,他当然有姓名、年龄、国籍,他也可以talk,但是应该表明身份是学生。看程序 E4.4-1.rb ,接着上一节的代码,添加如下:ruby 代码 class  Student < Person      def  talk        puts "I am a student. my name is "+@name+", age is...

2007-02-13 03:04:33 75

4.3 封装

让我们来定义一个类,类名是Person,类名首字母要大写;属性有姓名@name、年龄@age、国籍@motherland,实例变量用@开头; 方法有一个,叫talk, 方法名和参数名应该用一个小写字母开头或者用一个下划线开头,看程序 E4.3-1.rb 。#=>my name is kaichuan, age is 20  I am a Chinese.  my name is Ben,...

2007-02-13 02:53:39 59

4.1 两种思维方式 4.2 对象

4.1  两种思维方式人们起初使用计算机来进行科学计算,比如说:计算级数和,计算积分值。那时,程序要处理的都是带小数点的数字。后来,人们要处理文本,有点麻烦,好在文字也可以转换成数字。这两个时期,编写程序的思想是:一个步骤,一个步骤地告诉计算机如何做,做完一大段步骤,就算完成了一个功能模块。再后来,人们希望计算机能应用在管理中。比如说:机场管理。一个大都市的民航机场,每天有上千架飞机起落,乘客...

2007-02-13 02:47:31 72

3.11 一个综合小练习

还是求50以内的素数,尽可能地用到本章更多的语法,看程序 E3.12-1.rb ;  ruby 代码 #  E3.12-1.rb          求50以内的素数       $arr=[ ]      #建立一个全局数组  $arr    $arr[0]=2        def add_prime(n)    #定义方法 ...

2007-02-13 02:05:28 66

3.10 循环语句

一. while(当…) 循环while 条件 语句1; 语句2 ; 语句…end二. 单行 while 循环  ( 语句1; 语句2 ; 语句… )   while   条件 三. until(直到…)  循环我们想输出数字1到9,看程序 E3.10-1.rb,E3.10-2.rb : a=1 ...

2007-02-13 01:53:31 87

3.9 条件判断语句

判断条件是否相等用“==”,注意不要写成“=”。一. 单行 if(如果) 语句1)        if    条件① then 语句1; 语句2 ; 语句… end 2)        (语句1; 语句2 ; 语句… )   if   条件 二. 多行 if 语句if 条件       语句1; 语句2 ; 语句…elsif 条件       语句1; 语句2 ; 语句…e...

2007-02-13 01:30:21 63

3.8 赋值和条件运算符

  Ruby 基本的赋值用 “ = ” 来完成,就像 E3.8-1.rb 如下示例:(在不产生歧义的地方,我用 # => 表示答案)ruby 代码 a = 1 ;b =  2 + 3          # => a=1 ,b=5         a ,b = b ,a                      # => a=5 ,b=1        ...

2007-02-12 01:32:10 99

3.5 标识名和变量的作用域 3.6 类库 3.7 数据类型

3.5  标识名和变量的作用域     Ruby的标识名用来指向常量,变量,方法,类和模块。标识名的首字符用来帮助我们确定标识所指向内容的作用域。一些标识名,就是上面所示的关键字,不能用来当作常量,变量,方法,类或模块的名字。Ruby的标识名区分大小写。Ruby使用一个约定来帮助它区别一个名字的用法:名字前面的第一个字符表明这个名字的用法。局部变量、方法参数和方法名称应该用一个小写字母开头...

2007-02-12 01:18:50 77

3.2 分隔符 3.3 关键字 3.4 运算符

3.2  分隔符关键字、运算符、分隔符一起构成了一门编程语言的基本定义。3.2 、3.3 、3.4节分别对分隔符、关键字、运算符作一些介绍。如果有不详细的地方,将在本书后面部分介绍;或者是因为这些不常用到;还有一种情况是:可以被其它常用语法定义代替。Ruby中的常用分隔符如下: 符号<o:p><...

2007-02-12 01:17:13 80

3.1 注释与分行

Ruby中的注释有单行与多行两种,先看一个程序E3.1-1.rb:ruby 代码 #   E3.1-1.rb    从#开始到行尾是单行注释     puts  3/5      puts  3/5.0    =begin     puts  6/5      puts  6/5.0      多行注释可以用=begin...

2007-02-12 01:12:48 120

第二章 运行环境

你如果只是想了解Ruby语言,不准备实践,请跳过本章,从第三章开始我们的Ruby语言之旅。2.1  下载Ruby 1.8.5首先下载Ruby 1.8.5(2006-8-25) for Windows:在网页http://www.rubychina.net/downloads/ 上找到--〉Ruby on Windows--〉Ruby 1.8.5 One-Click Installer ...

2007-02-12 01:06:56 97

第一章 概述

1.1  编程语言的发展简史本小节是一些编程语言的简单介绍,你如果不感兴趣,可以略过不看。先说程序是什么?程序就是指令序列的有序集合。指令即代码,可以是数字,也可以是文字,文字最终要转换成数字。也就是说,程序是许多数字串,当然,也可以合并成一个很长很长的数字串。程序的作用是什么?程序能够做事,做你想叫它做的事。换一种说法,程序的功能是完成它的使命。它的使命由编写程序的人来决定,或者由编写程...

2007-02-12 01:05:03 85

对《Ruby入门》元编程的解释

有同学表示第九章元编程的例程不好理解。先道歉,因为能力不足于游刃有余地表达元编程的方方面面,所以我选择了只演示最简单的元编程,而不展开解释。下面给出例程的一点注释,不保证你能理解。对于入门,知道Ruby长于元编程就可以了。ruby 代码    class MetaPerson             def MetaPerson.method_missin...

2007-02-11 00:21:44 97

Ruby语言中文教程all in one

Ruby语言中文教程all in one1. Ruby语言进阶教程 已经全部完成,现将 入门部分 和 进阶部分 合二为一,转为 pdf 格式的文件。2. 压缩包里附有书中所有的例程。3. 压缩包里还有一个 SciTE 的中文资源文件,使用请看2.4节。4. 增加了5.5节 一些编码建议。5. 强制类型检测,弱化类型概念,强弱之间,歧义太大,书中强弱类型的提法...

2007-01-16 01:22:49 454

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除