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

面试题 相关文章推荐
List、Map、Set三个接口,存取元素时,各有什么特点?
Sep 27 面试题
不开辟用于交换数据的临时空间,如何完成字符串的逆序
Dec 02 面试题
"火柴棍式"程序员面试题
Mar 16 面试题
写出二分查找算法的两种实现
May 13 面试题
介绍一下Transact-SQL中SPACE函数的用法
Sep 01 面试题
.NET里面如何取得当前的屏幕分辨率
Dec 06 面试题
可靠的数据流传输TCP
Mar 15 面试题
P/Invoke是什么
Jul 31 面试题
配置管理计划的主要内容有哪些
Jun 20 面试题
EJB的基本架构
Sep 22 面试题
EntityManager都有哪些方法
Nov 01 面试题
Python是如何进行类型转换的
Jun 09 面试题
介绍一下Ruby的多线程处理
Feb 01 #面试题
Ruby如何创建一个线程
Mar 10 #面试题
Ruby如何进行文件操作
Jul 17 #面试题
Ruby如何实现动态方法调用
Nov 18 #面试题
介绍一下Ruby的特点
Jan 20 #面试题
JPA的优势都有哪些
Jul 04 #面试题
J2EE中的容器都包括哪些
Aug 21 #面试题
You might like
phpwind中的数据库操作类
2007/01/02 PHP
php数组对百万数据进行排除重复数据的实现代码
2010/06/08 PHP
用php的ob_start来生成静态页面的方法分析
2011/03/09 PHP
php获取操作系统语言代码
2013/11/04 PHP
php去除字符串换行符示例分享
2014/02/13 PHP
ThinkPHP中的create方法与自动令牌验证实例教程
2014/08/22 PHP
PHP运行模式汇总
2016/11/06 PHP
Yii全局函数用法示例
2017/01/22 PHP
PHP封装mysqli基于面向对象的mysql数据库操作类与用法示例
2019/02/25 PHP
js动态添加表格数据使用insertRow和insertCell实现
2014/05/22 Javascript
JS中数组重排序方法
2016/11/11 Javascript
详解vue与后端数据交互(ajax):vue-resource
2017/03/16 Javascript
用JS实现简单的登录验证功能
2017/07/28 Javascript
jquery实现企业定位式导航效果
2018/01/01 jQuery
vue源码入口文件分析(推荐)
2018/01/30 Javascript
新版vue-cli模板下本地开发环境使用node服务器跨域的方法
2018/04/03 Javascript
JavaScript表格隔行变色和Tab标签页特效示例【附jQuery版】
2019/07/11 jQuery
vue中注册自定义的全局js方法
2019/11/15 Javascript
javascript实现视频弹幕效果(两个版本)
2019/11/28 Javascript
jQuery实现鼠标移入显示蒙版效果
2020/01/11 jQuery
vue实现路由不变的情况下,刷新页面操作示例
2020/02/02 Javascript
jQuery实现移动端图片上传预览组件的方法分析
2020/05/01 jQuery
[01:14:35]DOTA2上海特级锦标赛B组资格赛#1 Alliance VS Fnatic第一局
2016/02/26 DOTA
Python生成随机验证码的两种方法
2015/12/22 Python
Python网络爬虫实例讲解
2016/04/28 Python
Python实现读取并保存文件的类
2017/05/11 Python
Python内置函数 next的具体使用方法
2017/11/24 Python
Django中使用CORS实现跨域请求过程解析
2019/08/05 Python
opencv 图像滤波(均值,方框,高斯,中值)
2020/07/08 Python
无惧面试,带你搞懂python 装饰器
2020/08/17 Python
奥兰多迪士尼门票折扣:Undercover Tourist
2018/07/09 全球购物
医院护士求职自荐信格式
2013/09/21 职场文书
法学专业应届生求职信
2013/10/16 职场文书
临床医学专业求职信
2014/08/08 职场文书
暖春观后感
2015/06/08 职场文书
2019年“我为祖国点赞”演讲稿(3篇)
2019/09/26 职场文书