揭开 Ruby 的神秘面纱♦️(2/3):对象,到处都是对象

主要观点:Ruby 的基本原理是万物皆对象,数据、类等都是对象,都有属性和行为。对象有唯一标识符(object ID),可用于区分对象实例。
关键信息

  • 每个数据类型如数字、字符串等都是对象,如1.is_a?(Object)true
  • 每个对象都有object ID,如nil.object_id等。
  • 变量分为实例变量(@前缀)和类变量(@@),实例变量存储对象的独立状态,类变量在类的所有实例间共享。
  • 方法调用遵循方法查找链,包括对象的单例类、对象的类、包含的模块、超类链、Kernel模块、Object类和BasicObject
  • Ruby 支持开放类,可在运行时修改类的行为,如ActiveSupport利用开放类扩展核心类。
  • 元编程通过动态创建和修改代码来实现各种功能,如attr_accessor利用元编程动态创建方法,method_missing用于处理未定义方法。
    重要细节
  • Object的超类是BasicObjectnil等对象的object ID是固定的,而普通对象的object ID是动态分配的。
  • 方法查找链中先查找单例类中的方法,再依次查找类、包含的模块等。
  • 开放类虽灵活但有风险,需谨慎使用,method_missing可处理未定义方法的情况。例如DynamicHash类通过method_missing实现动态哈希表的功能。
阅读 12
0 条评论