解释一下ruby中的特殊方法与特殊类


Posted in 面试题 onFebruary 26, 2013
特殊方法是指某实例所特有的方法。一个对象有哪些行为由对向所属的类决定,但是有时候,一些特殊的对象有何其他对象不一样的行为,在多数程序设计语言中,例如C++和Java,我们必须定义一个新类,但在Ruby中,我们可以定义只从属于某个特定对象的方法,这种方法我们成为特殊方法(Singleton Method)。

class SingletonTest
def info
puts “This is This is SingletonTest method”
end
end

obj1 = SingletonTest.new
obj2 = SingletonTest.new

def obj2.info
puts “This is obj2″
end

obj1.info
obj2.info

执行结果为:
This is This is SingletonTest method
This is obj2

有时候,我们需要给一个对象定义一系列的特殊方法,如果按照前面的方法,那么只能一个一个定义:

def obj2.singleton_method1
end

def obj2.singleton_method2
end

def obj2.singleton_method3
end
……
def obj2.singleton_methodn
end

这样做非常繁复麻烦,而且无法给出一个统一的概念模型,因此Ruby提供了另外一种方法,
class ……
end

obj是一个具体的对象实例,class
class SingletonTest
def meth1
puts “This is meth1″
end

def meth2
puts “This is meth2″
end
end

obj1 = SingletonTest.new
obj2 = SingletonTest.new

class def meth1
puts “This is obj2′s meth1″
end

def meth2
puts “This is obj2′s meth2″
end
end

obj1.meth1
obj1.meth2
obj2.meth1
obj2.meth2

执行结果为:
This is meth1
This is meth2
This is obj2′s meth1
This is obj2′s meth2

Tags in this post...

面试题 相关文章推荐
运行时异常与一般异常有何异同?
Jan 05 面试题
C语言如何决定使用那种整数类型
Nov 26 面试题
C面试题
Oct 08 面试题
声明struct x1 { . . . }; 和typedef struct { . . . }x2;有什么不同
Jun 02 面试题
北京华建集团SQL面试题
Jun 03 面试题
如何估计一张表的大小(假设该表中有1万条数据)
Mar 27 面试题
南京某软件公司的.net面试题
Nov 30 面试题
杭州-DOTNET笔试题集
Sep 25 面试题
中科方德软件测试面试题
Apr 21 面试题
初始化了一个没有run()方法的线程类,是否会出错?
Mar 27 面试题
Java模拟试题
Nov 10 面试题
信号量和自旋锁的区别?如何选择使用?
Sep 08 面试题
介绍一下Ruby的多线程处理
Feb 01 #面试题
Ruby如何创建一个线程
Mar 10 #面试题
Ruby如何进行文件操作
Jul 17 #面试题
Ruby如何实现动态方法调用
Nov 18 #面试题
介绍一下Ruby的特点
Jan 20 #面试题
JPA的优势都有哪些
Jul 04 #面试题
J2EE中的容器都包括哪些
Aug 21 #面试题
You might like
图象函数中的中文显示
2006/10/09 PHP
常用的php对象类型判断
2008/08/27 PHP
PHP 获取远程文件大小的3种解决方法
2013/07/11 PHP
Laravel 5框架学习之表单
2015/04/08 PHP
CodeIgniter针对数据库的连接、配置及使用方法
2016/03/03 PHP
简单的js图片轮换代码(js图片轮播)
2014/05/06 Javascript
JavaScript 深层克隆对象详解及实例
2016/11/03 Javascript
Angular-Touch库用法示例
2016/12/22 Javascript
JS高仿抛物线加入购物车特效实现代码
2017/02/20 Javascript
基于Vue.js实现tab滑块效果
2017/07/23 Javascript
微信小程序自定义组件实现环形进度条
2020/11/17 Javascript
怎么理解wx.navigateTo的events参数使用详情
2020/05/18 Javascript
python实现获取客户机上指定文件并传输到服务器的方法
2015/03/16 Python
python自定义异常实例详解
2017/07/11 Python
十个Python练手的实战项目,学会这些Python就基本没问题了(推荐)
2019/04/26 Python
详解Python修复遥感影像条带的两种方式
2020/02/23 Python
如何实现更换Jupyter Notebook内核Python版本
2020/05/18 Python
python读取hdfs上的parquet文件方式
2020/06/06 Python
Python如何在单元测试中给对象打补丁
2020/08/03 Python
Python下载网易云歌单歌曲的示例代码
2020/08/12 Python
使用OpenCV实现人脸图像卡通化的示例代码
2021/01/15 Python
美国旅游网站:Tours4Fun
2017/02/17 全球购物
汉森批发:Hansen Wholesale
2018/05/24 全球购物
医科大学毕业生自荐信
2014/02/03 职场文书
综合实践活动方案
2014/02/14 职场文书
承诺书格式
2014/06/03 职场文书
关于运动会的广播稿
2014/09/22 职场文书
毕业生就业推荐表自我评价
2015/03/02 职场文书
2015年控辍保学工作总结
2015/05/18 职场文书
法定代表人资格证明书
2015/06/18 职场文书
庆七一主持词
2015/06/29 职场文书
自书遗嘱范文
2015/08/07 职场文书
详解CSS伪元素的妙用单标签之美
2021/05/25 HTML / CSS
python调试工具Birdseye的使用教程
2021/05/25 Python
分享MySQL常用 内核 Debug 几种常见方法
2022/03/17 MySQL
如何使用SQL Server语句创建表
2022/04/12 SQL Server