`
wangjian5748
  • 浏览: 209551 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

programming ruby 2nd学习笔记

阅读更多

本文是我学习programming ruby 2nd的笔记,由于我熟悉的语言是javapython,所以会在其中夹杂一些rubyjavapython的比较,文中的其他语言一律指javapython。格式按原文的顺序,我只是按我阅读的顺序来更新本文,若没时间,更新会很慢。

好像我的电子文档有问题,不少目录结构不正确。

第一版序言

 

Ruby创始人的序言

第二版序言

 

还是Ruby创始人的序言

前言

 

一些废话,不过看了可以增加一下见识J

路标

 

这本书主要分成四部分:

l         Ruby的方方面面:语法级别的详细说明

l         Ruby设置:对于ruby SDK命令行,以及配套工具使用说明

l         Ruby详细:对ruby语言的关键点详细说明

l         Ruby参考手册:比较完整的参考手册,差不多占了本书的一半篇幅

 

作者建议了各种不同类型的读者的阅读方式:

l         如果你是个初学者:你最好从第一部分的教材开始,把库参考放在手边,你就可以写程序了。

l         如果你已经精通PerlPythonJava或者Smalltalk,你可以从第1章开始,熟悉了ruby安装与运行后,然后阅读第2章关于ruby基本特性的介绍,接着你可以采取较慢的方法(按顺序阅读),或者略过这些详细说明,直接跳到第三部分的高级部分,最后参看第四部分的库参考。

l         专家、大师、和那些“我讨厌冗长的教材”的人可以直接跳到到第22章的语言参考,然后翻一下第四部分得库参考,然后把这本书作为一个咖啡杯垫。

ruby的方方面面

 

开始

 

安装ruby

运行ruby

Ruby文档:RDocri

ruby新手上路

ruby是一门面向对象语言

每种语言都宣称自己是OO语言,只是不同的支持方式,java说自己比C++来的更OO,更简单;python说自己比java对象,就连方法都是对象。但关键一点是,编译型的语言不能直接拿来跟python等动态语言相比,很多特征没有可比性,尤其是对OO特征的比较。总之,不能为了那个,而让编码很难受,可以参看原文作者的辩解J

ruby的一些基本知识

1.        不需要在行尾加上分号,一行一个语句

 

2.        Ruby注释开始于#号,结束在行尾,缩排没有特殊意义,就是每行的开头不缩行,不过为了可读性,不建议这样做

 

3.        方法是由关键字def来定义的,紧跟着方法的名字。Ruby不使用大括号来划定复合语句和定义的界限,而是简单地用关键词end来结束它们

 

4.         函数调用可以不用括号,但是,优先规则会使哪个参数被哪个方法使用变得复杂,所以我们建议除了极简单的情况,还是使用圆括号为好

5.         单引号与双引号之间的不同是Ruby在转换字面值到字符串对象时所处理的数量,单引号的情况下会少。除了一些例外,字符串字面值就是字符串的值。

6.         双引号的情况下,Ruby要做更多的处理,首先,把反斜杠开头的字符替换成二进制值。最常见的是"\n"(被替换成换行符);第二点,Ruby要修改双引号括住的字符串,字符串中的#{表达式}序列要用表达式的值来替换(如果表达式是一个简单的全局变量、实例或者类变量,那么就不必写出大括号)

7.         Ruby方法的返回值默认是最后被求的表达式的值(不过,我觉得这没什么好处)

8.         命名约定:

l         名字前面的第一个字符表明这个名字的用法,局部变量、方法参数和方法名称应该用一个小写字母开头或者一个下划线;

l         全局变量用美元符作为前缀($),而实例变量用@开头,类变量用两个@开头;

l         最后,类名、模块名和常量应该大写字母开头。

l         词首字母后面可以是字母、数字和下划线的任意组合(规则规定,@后面不可以直接跟数字)

数组与hash

1.        Ruby的数组和哈希是有序集合(注意在java中,hash有无序的实现类,也有有序的;pythonruby一样)

 

2.        创建空数组两个方法: empty1 = []; empty2 = Array.new

 

3.        对于创建字符串的数组,可以使用快捷方式%w: a = %w{ ant bee cat dog elk },输出结果: ["ant", "bee", "cat", "dog", "elk"]

 

4.        hash的创建与python一样,使用大括号”{}”,可能都是动态语言的缘故吧

 

5.        如果使用一个不存在的键来索引哈希,默认返回nil。正常情况下这是很方便的,因为nil用在条件表达式中就是false

 

6.        创建一个新的空的哈希时改变默认值是很容易的,比如:histogram = Hash.new(0)

 

 

总之,ruby中这两个对象的使用方式与python差不多一样

 

控制结构

1.        Ruby包括所有常见的控制结构,这些结构的主体周围缺少了大括号,在Ruby中使用end关键字表示一段主体的结束

 

2.         如果if语句或者while语句的主体是一个简单的表达式,可以使用Ruby语句修饰符来代替。简单地写下这个表达式,后面跟上if或者while和条件语句。例如:

l         通用形式:

if radiation>3000
   puts "Danger,Will Robinson"
end

l                修饰符形式:

 

puts "Danger,Will Robinson" if radiation>3000

 

正则表达式

与其他语言没什么区别,可以参看Mastering Regular Expressions》,国内已经影印出版了

代码块与迭代器

1.        代码块:可以和方法调用关联的一系列代码,就好像这些代码是方法的参数一样,把代码块和方法当成是协同工作的关系,在它们之间控制在来回交换。

 

2.        Rubyyield语句能够调用代码块一次或者更多次。

 

3.         贯穿整个Ruby库,到处都是使用代码块来实现迭代器。迭代器是一种用来连续返回某种集合所有元素的方法,比如一个数组。

读取与’Riting

1.        Ruby带着很完善的I/O

 

2.         puts把它的所有参数写出来,每一个都加入一个新行;print也写出它的参数,不过没有新行。它们两个都能向任意的I/O对象写入,不过默认是写入控制台;printf按格式输出参数(就像C或者Perlprintf)。

3.         有很多种方式来把输入读取到你的程序中,最传统的就是使用gets例程,它从你的程序的标准输入流中返回下一行。

4.        可以参看原文中的关于$_ARGF的讨论,很有收获

 

继续前进

本章是一个对ruby语言的基本特性的快速浏览

类,对象,变量

1.        Ruby中使用class来定义类,构造方法是initialize,可以带参数。Java中是与类同名的方法,python中是__init__方法。

 

2.        使用类的new默认方法来构造对象,可以传递参数。比如:

 

aSong = Song.new("Bicylops", "Fleck", 260) 

 

继承与消息

Ruby使用”<”来表示继承关系,java使用extends, python使用()

 

对象与属性

1.        这两个概念与一般OO语言没什么本质的区别

 

2.        ruby是单继承语言,但是ruby提供了一种达到多继承效果的功能:混合(Mixins),而没有多继承的缺点

 

3.        Ruby提供了简便方式来创建属性读取与写入方法:attr_readerattr_writer

分享到:
评论

相关推荐

    Programming Ruby 2nd.pdf

    根据提供的文件信息,可以提取以下关于Ruby编程语言及其入门书籍《Programming Ruby 2nd》的知识点: 1. Ruby语言概述:Ruby是一种功能强大且实用的编程语言,被许多开发者所喜爱。它以智能、优雅和有趣而闻名。...

    Programming Ruby - The Pragmatic Programmer's Guide, 2nd Edition (2005) [annotated]

    詹姆斯·布里特,ruby-doc.org网站管理员,表示第一版的《Programming Ruby》就是一本智慧、优雅且充满趣味的书,而第二版更是超越前者,成为Ruby学习者的首选资料。 ### 学习Ruby的意义 查德·福勒(Chad Fowler...

    Programming Ruby 2nd Edition

    《Programming Ruby 2nd Edition》是关于Ruby编程语言的经典指南,尤其对于想要深入理解并熟练掌握Ruby编程的开发者来说,这本书具有极高的价值。Ruby是一种动态、面向对象的脚本语言,以其简洁、优雅的语法和强大的...

    Programming Ruby 2nd

    《Programming Ruby 2nd》是编程领域的一本经典著作,由Dave Thomas、Chad Fowler和Andy Hunt合著,被广大开发者誉为“程序员的指南”。这本书深入浅出地介绍了Ruby编程语言,帮助读者掌握这种优雅而强大的语言。 ...

    Pragmatic Bookshelf, Programming Ruby 2nd

    - **Mike Clark**(作者兼咨询顾问)表示,对于那些沉浸在Java世界的人来说,《Programming Ruby》是一本不可或缺的学习资源,能够揭示出许多被忽视的功能。 - **James Britt**(ruby-doc.org管理员)认为这本书既...

    Programming ruby.pdf

    总的来说,《Programming Ruby》是学习和精通Ruby编程的必备参考书,无论你是初学者还是经验丰富的开发者,都能从中受益匪浅。通过深入阅读和实践,你将能够熟练地运用Ruby进行各种开发工作,并领略到Ruby优雅而强大...

    ruby学习资源(Programming Ruby, Learning Ruby, The Ruby Way)

    内含以下4个文档: 1、Addison.Wesley.The.Ruby.Way.2nd.Edition.Oct.2006.chm 2、O'Reilly.Learning.Ruby.May.2007.chm 3、Programming Ruby 2e.pdf 4、ruby中文文档.chm

    Programming Ruby.pdf

    《Programming Ruby》被誉为是学习Ruby语言的最佳指南,这本书在IT界享有极高的声誉,被亲切地称为“镐头书”,其价值与影响力无远弗届。本书不仅详细介绍了Ruby语言的核心概念、语法结构以及编程实践,还深入探讨了...

    Programming Ruby中文版第二版[高清扫描版][带书签]和Programming.Ruby-2nd[高清文字版][带书签].pdf

    《Programming Ruby》中文版第二版是一本专注于Ruby编程语言的经典教程。这本书的两个版本——高清扫描版和高清文字版,都是为了便于读者学习和查阅,其中都带有书签功能,帮助读者快速定位到相关内容。 Ruby是一种...

    Programming Ruby 1.9 (3rd edition)和源码

    《Programming Ruby 1.9 (3rd edition)》是一本专为程序员编写的关于Ruby语言的权威指南,这本书的第三版详细介绍了Ruby 1.9版本的语言特性、库以及编程实践。Ruby是一种动态、面向对象的脚本语言,以其简洁、优雅的...

    Programming_ruby-2nd.pdf

    1. 书籍介绍:《Programming Ruby - 2nd Edition》是一本关于Ruby编程语言的英文书籍。该书被多位业界知名人士推荐,并对Ruby语言的介绍和学习提供了重要支持。 2. Ruby语言的特点:Ruby被描述为一个强大且实用的...

    Programming Ruby (English Version) and Source Code

    该压缩包包含了两部分:Programming Ruby.chm是书中的内容,以帮助读者系统地学习Ruby语言。CHM文件是一种常见的Windows帮助文档格式,包含了HTML页面、索引和图像,方便用户在电子设备上阅读。它通常组织成章节结构...

    Programming Ruby

    通过阅读《Programming Ruby》,读者不仅可以学习到Ruby的基本语法,还能深入了解其背后的哲学和设计思想,从而成为一名高效的Ruby开发者。书中的实例和练习将帮助你更好地掌握Ruby编程,提升解决问题的能力。

    《Programming Ruby》中文第2版源代碼下載

    《Programming Ruby》是一本经典的Ruby编程语言教程,中文第二版为中国的程序员提供了深入学习Ruby的宝贵资源。这本书的源代码下载对于读者来说是极其有用的,因为它允许读者在实践中探索和理解书中所阐述的概念。...

Global site tag (gtag.js) - Google Analytics