解释一下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 23 面试题
使用C#编写创建一个线程的代码
Jan 22 面试题
LINUX下线程,GDI类的解释
Apr 17 面试题
Linux面试题LINUX系统类
Nov 25 面试题
Linux管理员面试经常问道的相关命令
Apr 29 面试题
进程的查看和调度分别使用什么命令
Mar 25 面试题
一套比较完整的软件测试人员面试题
May 13 面试题
软件测试企业面试试卷
Jul 13 面试题
MYSQL相比于其他数据库有哪些特点
Jul 19 面试题
Java基础面试题
Jul 19 面试题
abstract class和interface有什么区别
Aug 04 面试题
介绍一下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中记录用户访问过的产品,在cookie记录产品id,id取得产品信息
2011/05/04 PHP
Yii 快速,安全,专业的PHP框架
2014/09/03 PHP
PHP中PDO连接数据库中各种DNS设置方法小结
2016/05/13 PHP
php通过各种函数判断0和空
2020/07/04 PHP
javascript实现的在当前窗口中漂浮框的代码
2010/03/15 Javascript
当鼠标滑过文本框自动选中输入框内容的JS代码分享
2013/11/26 Javascript
jQuery实现加入购物车飞入动画效果
2015/03/14 Javascript
javascript日期操作详解(脚本之家整理)
2015/09/05 Javascript
js表单中选择框值的获取及表单的序列化
2015/12/17 Javascript
JS中生成随机数的用法及相关函数
2016/01/09 Javascript
jquery跟随屏幕滚动效果的实现代码
2016/04/13 Javascript
jQuery Validate 数组 全部验证问题
2017/01/12 Javascript
BootStrap select2 动态改变值的方法
2017/02/10 Javascript
Angularjs 实现移动端在线测评效果(推荐)
2017/04/05 Javascript
一次记住JavaScript的6个正则表达式方法
2018/02/22 Javascript
vue中实现先请求数据再渲染dom分享
2018/03/17 Javascript
chosen实现省市区三级联动
2018/08/16 Javascript
微信小程序实现单选选项卡切换效果
2020/06/19 Javascript
vue.js的状态管理vuex中store的使用详解
2019/11/08 Javascript
JavaScript监听触摸事件代码实例
2019/12/30 Javascript
微信小程序实现底部弹出模态框
2020/11/18 Javascript
Vue页面渲染中key的应用实例教程
2021/01/12 Vue.js
Django 迁移、操作数据库的方法
2019/08/02 Python
Python基于time模块表示时间常用方法
2020/06/18 Python
使用Python解析Chrome浏览器书签的示例
2020/11/13 Python
Python第三方库安装缓慢的解决方法
2021/02/06 Python
CSS3 2D模拟实现摩天轮旋转效果
2016/11/16 HTML / CSS
Lookfantastic俄罗斯:欧洲在线化妆品零售商
2019/08/06 全球购物
Yahoo-PHP面试题1
2016/07/20 面试题
Math.round(11.5)等於多少? Math.round(-11.5)等於多少?
2015/01/27 面试题
服装设计行业个人的自我评价
2013/12/20 职场文书
项目工作说明书
2014/07/29 职场文书
小学生反邪教心得体会
2016/01/15 职场文书
jQuery class属性操作addClass()与removeClass()、hasClass()、toggleClass()
2021/03/31 jQuery
Java存储没有重复元素的数组
2022/04/29 Java/Android
手把手带你彻底卸载MySQL数据库
2022/06/14 MySQL