第七章 默认对象和作用域<o:p></o:p>
self在程序执行过程中不断改变。任一时刻只有一个对象扮演self的角色。
为了知道哪个对象是self,需要知道当前的上下文。有顶层上下文、类定义块、模块定义块、模型定义块和方法定义块上下文。self由当前的上下文所决定。<o:p></o:p>
术语顶层指的是在任何类或模块定义块之外的程序代码。如果打开一个新的文本文件并键入
x=1
就产生了一个顶层局部变量x。如果键入
def m
end
就产生了一个顶层方法。
在没有进入任何定义块之前,self是main。<o:p></o:p>
在类或模块定义中,self是类对象或模块对象。<o:p></o:p>
在定义块内部中的裸词XXX是self.XXX的简化形式。当在回到类定义块的外面,为了调用XXX,需要指明接收者<o:p></o:p>
实例变量和self
实例变量属于包含该实例变量的代码执行时扮演self角色的对象(即当前对象)
class C
def show_var
@v = "I am ..."
puts @v
end
@v = "IN..."
end
c.new.show_var<o:p></o:p>
全局作用域的优缺点
通过将信息保存在全局变量中,而不是设计必须用方法调用来获取信息的对象,多个类可以共享信息。但是使用全局变量对程序设计没有什么好处,反而最终会市区程序设计的稳固性和灵活性。
$gvar = "I'am.."
class C
def examine_global
puts $gvar
end
end
c = C.new
c.new.examine_global<o:p></o:p>
局部作用域
每次使用关键字def,class,module引入一个定义时,就开始了一个新的局部作用域。不论它们如何嵌套,都是这样的。
class C
a = 1
def local_a
a = 2
puts a
end
puts a
end
c = C.new
c.local_a
该代码输出如下:
1
2<o:p></o:p>
常量可定义在类和模块的定义块内。如果了解定义的嵌套关系,则可以从任意位置访问常量:
Moudle M
Class C
Class D
Module N
X = 1
End
End
End
End
Puts M::C::D::N::X<o:p></o:p>
<o:p> </o:p>
<o:p> </o:p>
分享到:
相关推荐
根据给定的文件信息,以下是本书《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关键字,方法可以接收可变数量的参数,...