Ruby对象原生行为
只要创建对象存在,他就能相应一组消息,每个对象在被创建时都语句确切的能力
在
irb解释器中p Object.new.methods.sort可以查看其原始方法

object_id表示唯一对象
Ruby中每一个对象都有一个和他唯一关联的ID编号,可以通过请求object_id获得该对象的ID 。
1 | class Tist |
1 | load "class.rb" |

上述尝试可以看出,同为一个类的对象object_id并不相等
在尝试确认两个对象是否相等时,可以采取判断objectt_id的方法
1 | load "class.rb" |

ID编号和对象的相等性
Ruby中给对象指定一个ID编号能够使对象有唯一的身份标识
respond_to?方法查询对象的能力
Ruby对象响应消息,在程序运行期间的不同时间点,依赖于对象和为对象定义的各种方法。
用户可以提前判断(在要求对象执行任务前)对想是否知道如何处理发送给他的消息,respond_to?对于所有对象都适用,通常和if语句联合使用
1 | obj = Object.new |
respond_to?使自省(_introspection_)或者反射(_reflection_)的一个例子
send方法发送信息给对象
send方法类似于.方法调用对象函数
1 | obj = Object.new |
使用
__send__或者public_send代替send
-
__send__是为了避免send方法和对象内建方法冲突 -
send和__send__可以调用对象的私有方法,public_send方法却不能
- Post title:Ruby对象原生行为
- Post author:Varsion
- Create time:2020-07-23 12:31:16
- Post link:https://blog.varsion.cn/post/a4983831.html
- Copyright Notice:All articles in this blog are licensed under BY-NC-SA unless stating additionally.
Comments