主要观点:Ruby 的基本原理是万物皆对象,数据、类等都是对象,都有属性和行为。对象有唯一标识符(object ID),可用于区分对象实例。
关键信息:
- 每个数据类型如数字、字符串等都是对象,如
1.is_a?(Object)
为true
。 - 每个对象都有
object ID
,如nil.object_id
等。 - 变量分为实例变量(
@
前缀)和类变量(@@
),实例变量存储对象的独立状态,类变量在类的所有实例间共享。 - 方法调用遵循方法查找链,包括对象的单例类、对象的类、包含的模块、超类链、
Kernel
模块、Object
类和BasicObject
。 - Ruby 支持开放类,可在运行时修改类的行为,如
ActiveSupport
利用开放类扩展核心类。 - 元编程通过动态创建和修改代码来实现各种功能,如
attr_accessor
利用元编程动态创建方法,method_missing
用于处理未定义方法。
重要细节: Object
的超类是BasicObject
,nil
等对象的object ID
是固定的,而普通对象的object ID
是动态分配的。- 方法查找链中先查找单例类中的方法,再依次查找类、包含的模块等。
- 开放类虽灵活但有风险,需谨慎使用,
method_missing
可处理未定义方法的情况。例如DynamicHash
类通过method_missing
实现动态哈希表的功能。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。