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

面试题 相关文章推荐
PHP如何对用户密码进行加密
Jul 31 面试题
super关键字的用法
Apr 10 面试题
写一个函数返回1+2+3+…+n的值(假定结果不会超过长整型变量的范围)
Sep 05 面试题
简述数组与指针的区别
Jan 02 面试题
存储过程和函数的区别
May 28 面试题
简述DNS进行域名解析的过程
Dec 02 面试题
.TTL是什么?有什么用处,通常那些工具会用到它?(ping? traceroute? ifconfig? netstat?)
May 09 面试题
说一下Linux下有关用户和组管理的命令
Jan 04 面试题
什么是JNDI的上下文?如何初始化JNDI上下文
Mar 10 面试题
启动一个线程是用run()还是start()
Dec 25 面试题
Java中会存在内存泄漏吗,请简单描述
Dec 22 面试题
Java面试题:为什么要用Java
May 11 面试题
介绍一下Ruby的多线程处理
Feb 01 #面试题
Ruby如何创建一个线程
Mar 10 #面试题
Ruby如何进行文件操作
Jul 17 #面试题
Ruby如何实现动态方法调用
Nov 18 #面试题
介绍一下Ruby的特点
Jan 20 #面试题
JPA的优势都有哪些
Jul 04 #面试题
J2EE中的容器都包括哪些
Aug 21 #面试题
You might like
Sorting Array Values in PHP(数组排序)
2011/09/15 PHP
PHP实现PDO的mysql数据库操作类
2014/12/12 PHP
WordPress中对访客评论功能的一些优化方法
2015/11/24 PHP
调试php程序的简单步骤
2019/10/04 PHP
Prototype源码浅析 Enumerable部分(二)
2012/01/18 Javascript
javascript获取浏览器类型和版本的方法(js获取浏览器版本)
2014/03/13 Javascript
分享20款美化网站的 jQuery Lightbox 灯箱插件
2014/10/10 Javascript
node.js中的fs.utimesSync方法使用说明
2014/12/15 Javascript
JS中处理时间之setUTCMinutes()方法的使用
2015/06/12 Javascript
谈谈我对JavaScript中typeof和instanceof的深入理解
2015/12/25 Javascript
基于JavaScript实现高德地图和百度地图提取行政区边界经纬度坐标
2016/01/22 Javascript
使用JQuery中的trim()方法去掉前后空格
2016/09/16 Javascript
纯javaScript、jQuery实现个性化图片轮播【推荐】
2017/01/08 Javascript
探究react-native 源码的图片缓存问题
2017/08/24 Javascript
利用javascript如何随机生成一定位数的密码
2017/09/22 Javascript
JS中‘hello’与new String(‘hello’)引出的问题详解
2018/08/14 Javascript
浅析微信扫码登录原理(小结)
2018/10/29 Javascript
JS中this的4种绑定规则详解
2020/02/04 Javascript
如何在JS文件中获取Vue组件
2020/09/16 Javascript
[50:24]VGJ.S vs Pain 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
Python中的日期时间处理详解
2016/11/17 Python
Python实现Linux的find命令实例分享
2017/06/04 Python
Pycharm技巧之代码跳转该如何回退
2017/07/16 Python
PyChar学习教程之自定义文件与代码模板详解
2017/07/17 Python
快速了解python leveldb
2018/01/18 Python
python Pandas 读取txt表格的实例
2018/04/29 Python
python的pygal模块绘制反正切函数图像方法
2019/07/16 Python
解决pyshp UnicodeDecodeError的问题
2019/12/06 Python
基于Python fminunc 的替代方法
2020/02/29 Python
Python数据库封装实现代码示例解析
2020/09/05 Python
MoviePy常用剪辑类及Python视频剪辑自动化
2020/12/18 Python
HTML5拖拽的简单实例
2016/05/30 HTML / CSS
GWT的应用有哪两种部署模式
2012/12/21 面试题
高中课程设置方案
2014/05/28 职场文书
拖欠货款起诉状
2015/05/20 职场文书
MySQL触发器的使用
2021/05/24 MySQL