第五章 用类组织对象
重定义方法
class C
def m
puts "..."
end
def m
puts "........"
end
end
以第2次定义的方法为准
重新打开类
class C
def x
end
end
class C
def y
end
end
与下面代码等价
class C
def x
end
def y
end
end
可以将单个类的代码分散到多个文件中或者一个文件中的多个位置
实例变量和对象状态&初始化对象状态(initialize)
class Ticket
def initialize(venue,date)
@venue = venue
@date = date
end
def venue
@venue
end
def date
@date
end
end
这时,如果这样调用
th = Ticket.new("Town Hail","11/12/13")
cc = Ticket.new("Convention Center","12/13/14")
puts "We've created two tickets."
puts "The first is for a #{th.venue} event on #{th.date}."
puts "The second is for an event on #{cc.date}at #{cc.venue}."
输出结果如下:
We've created two tickets.
The first is for a Town Hall event on 11/12/13.
The second is for an event on 12/13/14 at Convention Center.
由于实例变量的作用,整个保存和检索对象信息的过程完成得很好。执行了initialize方法后,每个入场卷对象都有了自己的状态。
方法中的等号&语法糖衣
Ruby允许以等号结束的方法:
def price=(amount)
@price = amount
end
price=完成与set_price完全一样的工作。可以这样去调用它,等号后面的括号是可选的。
ticket.price=(65.00)
to_i(转换到整数)
y.to_i
split('/')分割字符串
month,day,year = date.splite('/')
实例方法属性
attr_reader :venue等效于
def venue
@venue
end
attr_writer :price等效于
def price(price)
@price = price
end
attr_accessor :price等效于
def price=(price)
@price = price
end
def price
@price
end
类方法&类的实例方法
类的实例方法引用方法如:
Ticket#price
类方法引用如:
Ticket.most_expensive
或
Ticket::most_expensive
注意,双引号是访问内建常量的方法,但在这里不是
常量
常量定义通常位于或靠近类定义的顶部
class Ticket
VENUES = ["Convention Center","Fairgrounds","Town Hail"]
调用:
puts Ticket::VENUES
常量使用双引号作为访问原则
常量可以重新赋值和改变,也可以给常量添加成员(使用<<方法)
例如,在文件routing.rb中有以下代码
Helpers = []
然后在稍后的某个地方有如下代码:
Helpers<< url_helper_name(name).to_sym
Helpers<< hash_access_name(name).to_sym
这段代码产生一个用于辅助方法名的数组,然后向其中插入这两个方法名。事实上只是在付与该名的对象中又添加了几项而已。
继承
如:
class Publication
attr_accessor :publisher
end
class Magazine < Publication
attr_accessor :editor
end
分享到:
相关推荐
根据给定的文件信息,以下是本书《Ruby for Rails中文版,完整扫描版》的相关知识点概述: 1. 针对Ruby初学者:本书作为入门教材,旨在帮助初学者掌握Ruby语言基础。这对于已经熟悉其他编程语言但尚未接触过Ruby的...
《Ruby for Rails中文版》是美国作者David Black所著的一本专为Rails开发者介绍Ruby语言的书籍,旨在帮助读者深入理解Ruby的基础与Rails框架的内在联系。Ruby是一种面向对象的、动态类型的编程语言,它的简洁语法和...
《Ruby for Rails中文版》是一本深入探讨Ruby on Rails框架的书籍,它的源代码提供了丰富的实践示例,帮助读者更好地理解和应用Rails开发技巧。在这个压缩包中,包含了多个与Rails编程相关的文件,如`r4rmusic-1`、`...
### Ruby for Rails 知识点概述 #### 一、书籍背景与重要性 - **书籍定位**:《Ruby for Rails》被广泛认为是学习Ruby语言的必读之作,特别是对于那些希望利用Ruby on Rails(RoR)进行高效Web开发的学习者而言。...
Ruby三神书之一(其余的两本是Agile.Web.Development.with.Rails和Rails Recipes,在我的资源列表也有) “本书作者曾经教过我很多Ruby知识……每一个从其他语言转到Rais的人都应该拥用本书。为了充分发挥Rails的...
Ruby是一种面向对象的编程语言,以其简洁、优雅的语法著称,被广泛应用于Web开发,尤其是与Ruby on Rails框架结合使用。"Ruby新手学习书"和"Rails_4_days"这两个资源是为初学者设计的,旨在帮助他们快速掌握Ruby语言...
《Ruby基础教程(中文第四版)》是深入学习Ruby语言的重要参考资料,由Ruby之父亲自审校并作序推荐,其权威性和准确性不言而喻。 该书涵盖了Ruby的基础知识,包括但不限于以下内容: 1. **变量和常量**:Ruby中的...
总之,无论你是对编程感兴趣的新手,还是想扩展技能树的开发者,这份“Ruby入门教程中文PDF 附实例”都将是你宝贵的参考资料。通过学习,你不仅可以掌握Ruby的基础知识,还能体验到编程的乐趣和效率。
本书《敏捷Web开发之Rails应用详解》第三版主要介绍了如何使用Ruby on Rails框架来进行敏捷Web开发。Rails是一个用Ruby语言编写的开源Web应用框架,它遵循MVC(Model-View-Controller)架构模式,并且强调代码的简洁...
本资源"For-Rails-Beginners"显然是为那些希望入门Ruby on Rails的初学者设计的,特别是对于台湾地区和使用传统中文的用户。 在Rails框架中,以下是一些核心概念和知识点: 1. **Ruby语言基础**:在学习Rails之前...
这份电子版手册详细介绍了Ruby的核心概念、语法以及常见问题的解决方案,旨在帮助开发者快速掌握并熟练运用Ruby。 在Ruby的世界里,了解基本语法是入门的第一步。这包括变量(局部变量、实例变量、类变量和全局变量...
这个"Ruby语言入门教程(中文版)[PDF]"涵盖了Ruby的基础到进阶内容,适合初学者和希望巩固Ruby知识的开发者。通过阅读并实践教程中的例子,读者可以逐步掌握Ruby编程,并开启在Ruby世界中的探索之旅。
2. **控制结构**:Ruby中的流程控制有if/else、case、while/until循环、for循环以及块(Proc和Lambda)的使用,这些都是编写逻辑代码的关键部分。 3. **面向对象**:Ruby是面向对象的,每个值都是一个对象。它支持...
本教程的中文版将引导你逐步了解并掌握这些知识点,无论你是编程新手还是寻求新挑战的开发者,都能从中受益。通过阅读和实践,你将能够编写出优雅、高效的Ruby代码,并进一步探索这个充满魅力的编程世界。
《笨方法学Ruby》是针对初学者的一本中文教程,旨在通过实践性的学习方式帮助读者掌握Ruby编程语言。这本书的特点是强调动手实践,通过一系列的练习来深化对Ruby语法和编程概念的理解。以下是对该书内容及压缩包文件...
Ruby是一种面向对象的、动态...通过这个中文教程,你将掌握其基本语法,理解面向对象编程的概念,熟悉常用的类库和工具,并能够运用Ruby进行实际的项目开发。无论你是初学者还是有经验的开发者,都能从这个教程中受益。
Web开发敏捷之道 应用Rails进行敏捷Web开发第4版 原版书及代码 (rails3.2版) 原书名为:Agile Web Development with ...里面包含了第三版的中文版,和第四版 部分内容相似,可提供参考, enjoy rails, good luck ;)
在"ruby.rar"这个压缩包中,包含了三本中文教程,可以帮助初学者和经验丰富的开发者深入理解Ruby语言的核心概念和高级特性。 首先,让我们探讨一下Ruby的基础知识。Ruby由日本人松本行弘(Yukihiro Matsumoto)于1995...
- 控制结构:Ruby中的条件语句有if/else、unless、case,循环有while、until、for以及块(block)和循环控制关键字如break和next。 - 函数与方法:Ruby中的函数定义使用def关键字,方法可以接收可变数量的参数,...