解释一下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...

面试题 相关文章推荐
第二层交换机和路由器的区别?第三层交换机和路由器的区别?
May 23 面试题
如何查找和删除数据库中的重复数据
Nov 05 面试题
ddl,dml和dcl的含义
May 08 面试题
酷瑞网络科技面试题
Mar 30 面试题
Can a struct inherit from another struct? (结构体能继承结构体吗)
Sep 25 面试题
网上常见的一份Linux面试题(多项选择部分)
Sep 09 面试题
介绍一下write命令
Sep 24 面试题
你们项目是如何进行变更控制的
Aug 26 面试题
如何获得EntityManager
Feb 09 面试题
什么是Remote Module
Jun 10 面试题
JSF界面控制层技术
Jun 17 面试题
JSP和Servlet有哪些相同点和不同点,他们之间的联系是什么?
Oct 22 面试题
介绍一下Ruby的多线程处理
Feb 01 #面试题
Ruby如何创建一个线程
Mar 10 #面试题
Ruby如何进行文件操作
Jul 17 #面试题
Ruby如何实现动态方法调用
Nov 18 #面试题
介绍一下Ruby的特点
Jan 20 #面试题
JPA的优势都有哪些
Jul 04 #面试题
J2EE中的容器都包括哪些
Aug 21 #面试题
You might like
PHP初学者头疼问题总结
2006/10/09 PHP
php 操作excel文件的方法小结
2009/12/31 PHP
ThinkPHP应用模式扩展详解
2014/07/16 PHP
php实现兼容2038年后Unix时间戳转换函数
2015/03/18 PHP
php支持断点续传、分块下载的类
2016/05/02 PHP
PHP数据库表操作的封装类及用法实例详解
2016/07/12 PHP
phpcms配置列表页以及获得文章发布时间
2017/07/04 PHP
php判断某个方法是否存在函数function_exists (),method_exists()与is_callable()区别与用法解析
2020/04/20 PHP
Aster vs Newbee BO5 第二场2.19
2021/03/10 DOTA
菜单效果
2006/10/14 Javascript
js玩一玩WSH吧
2007/02/23 Javascript
基于mootools插件实现遮罩层新手引导
2012/05/24 Javascript
利用div+jquery自定义滚动条样式的2种方法
2013/07/18 Javascript
JavaScript实现简单获取当前网页网址的方法
2015/11/09 Javascript
javascript性能优化之事件委托实例详解
2015/12/12 Javascript
jQuery+json实现的简易Ajax调用实例
2015/12/14 Javascript
关于安卓手机微信浏览器中使用XMLHttpRequest 2上传图片显示字节数为0的解决办法
2016/05/17 Javascript
JS用斜率判断鼠标进入DIV四个方向的方法
2016/11/07 Javascript
微信小程序实现动态设置页面标题的方法【附源码下载】
2017/11/29 Javascript
vue + axios get下载文件功能
2019/09/25 Javascript
vue css 引入asstes中的图片无法显示的四种解决方法
2020/03/16 Javascript
详解Vue的mixin策略
2020/11/19 Vue.js
Python二维码生成库qrcode安装和使用示例
2014/12/16 Python
Python下的Softmax回归函数的实现方法(推荐)
2017/01/26 Python
在python3环境下的Django中使用MySQL数据库的实例
2017/08/29 Python
python GUI库图形界面开发之PyQt5状态栏控件QStatusBar详细使用方法实例
2020/02/28 Python
浅谈pandas dataframe对除数是零的处理
2020/07/20 Python
纯CSS3制作页面切换效果的实例代码
2019/05/30 HTML / CSS
HTML5实现多张图片上传功能
2016/03/11 HTML / CSS
BRASTY捷克:购买香水、化妆品、手袋和手表
2017/07/12 全球购物
远东集团网络工程师面试题
2014/10/20 面试题
精选干货:Java精选笔试题附答案
2014/01/18 面试题
优秀少先队大队辅导员事迹材料
2014/05/04 职场文书
新品发布会策划方案
2014/06/08 职场文书
工作推荐信模板
2015/03/25 职场文书
教你快速开启Apache SkyWalking的自监控
2021/04/25 Servers