- 浏览: 51644 次
- 性别:
- 来自: 青岛
文章分类
最新评论
因此private和protected的在ruby当前和Java的定义有很大的区别:
1、在不同对象实例当中的作用域不同
Java当中,不管private还是protected的方法,都可以被同一个类别的其他对象实例调用;
Ruby当中,private方法不能被同一个类别的其他对象实例调用;
2、在类继承关系当中的作用域不同
ruby当中,不管private还是protected方法,都可以被子类继承;
Java当中,private方法不能被子类继承;
这种方法调用的差异,也许来自于不同的面向对象理念:Java的面向对象来自C++,强调类继承关系,所以方法调用限定类继承的层次结构当中的作
用域,却不强调对象实例作用域;而ruby的面向对象来自smalltalk,即使是类别也是对象,因此方法调用作用域都是针对对象实例调用来设置的。
private 但是Ruby中意为 “private to this instance”.
你只能在你本对象的实例中访问本对象的private方法。
因为Ruby的原则是“private意为你不能指定方法接收者”,接收者只能是self,且self必须省略!
所以Ruby中子类可以访问父类的private方法。但self.private_method是错的。
protected 方法 可以在本类或子类中访问,不能在其它类中访问。
在其他类中调用本类方法也不行
发表评论
-
client_side_validations
2011-12-27 16:31 1146client_side_validations是一个 ... -
alias, alias_method和alias_method_chain
2011-12-26 16:34 873本文介绍Ruby里的几个关键字。 1. alias ... -
Ubuntu上Apache+Passenger部署实践
2011-12-07 11:39 1367http://hi.baidu.com/hackerbase/ ... -
用vim 开发rails
2011-12-05 19:11 59之前一直使用netbeans开发rails,看到同事们 都 ... -
gem 降级
2011-10-09 17:21 1967gem uninstall rubygems- ... -
render vs redirect
2011-08-15 15:53 982render和redirect的区别在于: rende ... -
ruby 正则匹配非站内链接
2011-08-01 16:48 960def has_href_not_XXX?(content ... -
转载一篇比较详细介绍rails routes的文章
2011-05-23 13:55 1571REST, Resources, and Rails ... -
rails 学习小结
2011-04-25 17:25 1027具名域 和 匿名域 ,rails无法处 ... -
find ---:readonly
2011-04-25 17:02 722如果:readonly 被设为 true 则不能将 find ... -
主键与ID
2011-04-25 16:43 876默认的主键为ID,我们可以如下来修改主键, ... -
rails Boolean型属性
2011-04-25 16:28 1524ruby中 对真值的定义 非常简单 除了nil和fals ... -
REST
2011-04-13 15:58 715http://hi.baidu.com/magiclin/bl ... -
ruby & rails 安装
2011-04-09 00:11 781ry1.8.7安装: 在终端执行: ... -
运用ActiveRecord
2011-04-08 16:46 91801.创建新实例 #01.1 a=Article.new ... -
刚学的一个activeRecord语句
2011-04-08 16:39 856学习rails两个礼拜了,加油加油 Person.find( ... -
将find出来的对象数组 组装成 字符串数组
2011-04-08 16:29 877user=User.find(:all,:select=& ... -
Rails Form helpers
2011-03-31 21:23 1340文章转自:http://yuan.iteye. ...
相关推荐
闭包可以捕获其定义时的上下文,使得它们在稍后的时间点依然能够访问到那些变量,即使它们的生命周期已经超出原始的作用域。 Functo库的关键特性包括: 1. **可组合性**:通过Functo,你可以将多个小的函数组合成...
它们各自有不同的命名规则和作用域。 - 数据类型:Ruby是动态类型语言,主要数据类型包括字符串(`String`)、整数(`Integer`)、浮点数(`Float`)、布尔值(`TrueClass`和`FalseClass`)、数组(`Array`)、哈希...
块可以与方法一起使用,形成闭包,这样就可以在方法中捕获并操作外部作用域的变量。 6. **元编程**:Ruby的元编程能力非常强大,允许在运行时修改和创建类和对象。这得益于Ruby的反射API和`send`方法,可以动态地...
- **作用域规则**:深入理解 Ruby 中的作用域规则,包括局部作用域、类作用域等。 - **块与闭包**:介绍块的概念及其与闭包的区别,以及如何在 Ruby 中使用它们。 #### 2.5 控制流技术 - **条件语句**:讲解 if、...
3. **函数与方法**:Ruby中的函数定义和调用,块和 Proc 对象,以及方法的定义、重载和作用域。 4. **面向对象编程**:Ruby是纯面向对象的语言,讲解类的定义、继承、模块(Module)的使用,以及对象创建和消息传递...
Ruby中的类还可以继承,通过`操作符定义子类,并可以使用`super`关键字调用父类的方法。 三、控制结构 Ruby提供了多种控制结构,如条件语句(if/else, case)、循环(for, while, until, each)和流程控制语句...
- **局部作用域**:通过 `load` 加载的文件将在调用它的局部作用域中执行,这有助于保持作用域的一致性。 - **指定路径**:必须提供文件的完整路径或相对路径。 #### `require` 与 `load` 的核心区别 虽然 `...
- 闭包:Ruby的块具有闭包特性,能记住其定义时的作用域,即使在其他作用域中也能访问。 4. **元编程** - 动态方法:Ruby可以在运行时动态地添加、修改或删除方法。 - `send`方法:用于在运行时调用方法,可以...
- 闭包是指能够访问其定义时作用域的变量的块,即使在块被调用时该作用域已不存在。 8. ** Proc和Lambda** - `Proc`和`lambda`都是Ruby的代码对象,可以存储和传递代码。 - `Proc`更灵活,允许在块末尾隐式返回...
- **全局变量**(Global Variables):以`$`开头,其作用域在整个程序中,如`$debug = true`。 - **常量**(Constants):以大写字母开头,表示不变的值,如`PI = 3.14`,但实际并非完全不可变。 2. 变量规则...
- 符号是Ruby中的一种特殊数据类型,它们是不可变的,常用于哈希键和方法调用。理解符号与字符串的区别对于优化内存使用至关重要。 3. **块和 Proc/Lambda**: - Ruby中的块(由`do...end`或`{...}`定义)是代码...
闭包在编程中是一个核心概念,它允许一个函数或表达式引用到其外部函数的作用域中的变量。在Ruby中,闭包是一种对象,它可以存储一段代码块以及这段代码可以访问到的变量。闭包的这一特性使得它们在处理集合数据或...
在实际使用中,`ruby-debug`提供了丰富的命令集,如`step`(单步执行)、`next`(跳过当前行,如果当前行包含方法调用则进入该方法)、`finish`(执行到当前作用域结束)、`break`(设置断点)等。这些命令使我们...
1. **Ruby内部机制揭秘**:每章末尾都包含“Digging Deeper”部分,揭示Ruby运行时的各种细节,如作用域解析、多线程实现等,帮助读者更好地理解语言本身的设计理念。 2. **陷阱与注意事项**:通过实际案例分析常见...
- **全局变量**、**实例变量**和**局部变量**:不同作用域内的变量类型。 - **类常量**:属于类的常量。 - **异常处理**:通过 `rescue` 和 `ensure` 处理程序错误和清理操作。 - **存取器**:getter 和 setter 方法...
《ruby23-language.chm》文档深入讲解了Ruby语言的特性,如动态性、元编程、闭包和块、方法定义与调用、变量作用域等。Ruby允许在运行时修改代码,这使得元编程成为其强大之处。理解如何使用`eval`、`class_eval`和`...