解释一下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高级工程师面试问题推荐
Jan 18 面试题
北京银河万佳Java面试题
Mar 21 面试题
某IT外企面试题-二分法求方程!看看大家的C++功底
Jul 04 面试题
北京RT科技有限公司.net工程师面试题
Feb 15 面试题
如何查找网页漏洞
Jun 22 面试题
Can a struct inherit from another class? (结构体能继承类吗)
Jul 22 面试题
new修饰符是起什么作用
Jun 28 面试题
linux面试题参考答案(8)
Apr 19 面试题
介绍一下Mysql的存储引擎
Feb 12 面试题
什么是继承
Dec 07 面试题
Java语言程序设计测试题改错题部分
Jul 22 面试题
当文件系统受到破坏时,如何检查和修复系统?
Mar 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
PHPShop存在多个安全漏洞
2006/10/09 PHP
可定制的PHP缩略图生成程式(需要GD库支持)
2007/03/06 PHP
Apache环境下PHP利用HTTP缓存协议原理解析及应用分析
2010/02/16 PHP
php设置允许大文件上传示例代码
2014/03/10 PHP
排序算法之PHP版快速排序、冒泡排序
2014/04/09 PHP
PHP实现阳历到农历转换的类实例
2015/03/07 PHP
Yii2-GridView 中让关联字段带搜索和排序功能示例
2017/01/21 PHP
php mysql PDO 查询操作的实例详解
2017/09/23 PHP
Ucren Virtual Desktop V2.0
2006/11/07 Javascript
JQuery入门——用bind方法绑定事件处理函数应用介绍
2013/02/05 Javascript
$.get获取一个文件的内容示例代码
2013/09/11 Javascript
js向上无缝滚动,网站公告效果 具体代码
2013/11/18 Javascript
使用jquery中height()方法获取各种高度大全
2014/04/02 Javascript
javascript中兼容主流浏览器的动态生成iframe方法
2014/05/05 Javascript
javascript获取隐藏元素(display:none)的高度和宽度的方法
2014/06/06 Javascript
json对象与数组以及转换成js对象的简单实现方法
2016/06/24 Javascript
基于Vue.js实现简单搜索框
2020/03/26 Javascript
jQuery实现form表单序列化转换为json对象功能示例
2018/05/23 jQuery
详解JavaScript添加给定的标签选项
2018/09/17 Javascript
JavaScript实现新年倒计时效果
2018/11/17 Javascript
微信小程序使用map组件实现检索(定位位置)周边的POI功能示例
2019/01/23 Javascript
使用 Vue cli 3.0 构建自定义组件库的方法
2019/04/30 Javascript
使用layui的router来进行传参的实现方法
2019/09/06 Javascript
layui问题之模拟table表格中的选中按钮选中事件的方法
2019/09/20 Javascript
JS正则表达式验证密码强度
2020/03/18 Javascript
为什么推荐使用JSX开发Vue3
2020/12/28 Vue.js
Python实现partial改变方法默认参数
2014/08/18 Python
Python list列表中删除多个重复元素操作示例
2019/02/27 Python
python提取xml里面的链接源码详解
2019/10/15 Python
基于Python中的yield表达式介绍
2019/11/19 Python
python3从网络摄像机解析mjpeg http流的示例
2020/11/13 Python
python通过cython加密代码
2020/12/11 Python
CSS3弹性盒模型开发笔记(二)
2016/04/26 HTML / CSS
九月份红领巾广播稿
2014/01/22 职场文书
疑《守望先锋2》A测截图泄露 或将推出新模式、新界面
2022/04/03 其他游戏
java.util.NoSuchElementException原因及两种解决方法
2022/06/28 Java/Android