Object

所有类的超类,定义了一般对象的行为。

包含的模块

方法

self == other

检查 selfother 是否相等,预设情况下与 equal?有相同的效果。

此方法应需要依照各类的性质来重新定义。

self === other

此方法多是是用于 case 判断句中。预设情况下与 Object#== 相同。在子类中进行归属检查时,可以根据情况重新定义。

class

返回调用者所属的类。

clone
dup

生成对象的副本。clone 返回对象的完整副本,包括冻结状态和特殊方法。而 dup 只有复制对象内容而已。

注意,clone 和 dup 执行的是简单复制。所复制的是对象本身,而不是对象所指的对象(例如数组元素)。

复制的对象

obj.equal?(obj.clone)

通常不成立,但是

obj == obj.clone

则通常都会成立。

若是尝试复制 true、false、nil、Numeric 数字Symbol 符号 之类的对象则会抛出 TypeError 异常。

equal?(other)

当 otherself 时,返回 true。此方法不可以被重新定义。

freeze

冻结对象,即禁止改动对象的内容,若是修改冻结对象会抛出 TypeError 异常。

frozen?

若是对象被冻结则返回 true。

inspect

将对象以人类可读的字符串形式返回。

instance_of?(klass)

self 是 klass 类的直属实例,则返回 true。当 obj.instance_of?(c) 成立时,obj.kind_of?(c) 也一定会成立。

instance_variable_get(var)

获取并返回该对象的实例变量。

其中的参数 var 必须是字符串或者 Symbol 符号 的形式。

如果目标变量没有被定义,则会返回nil。

class Foo
  def initialize
    @foo = 1
  end
end

obj = Foo.new
p obj.instance_variable_get("@foo")     # => 1
p obj.instance_variable_get(:@foo)      # => 1
p obj.instance_variable_get(:@bar)      # => nil
instance_variable_set(var, val)

设置对象中的变量的变量名 var 和变量值 val 。

其中的参数 var 必须是字符串或者 Symbol 符号 的形式。

如果所输入的变量在之前并没有被定义,那么它会被函数自动定义。

obj = Object.new
p obj.instance_variable_set("@foo", 1)  # => 1
p obj.instance_variable_set(:@foo, 2)   # => 2
p obj.instance_variable_get(:@foo)      # => 2
instance_variables

以符号数组的形式返回对象中所有变量的名字。

obj = Object.new
obj.instance_eval { @foo, @bar = nil }
p obj.instance_variables

# => [:@foo, :@bar]
is_a?(mod)
kind_of?(mod)

当 selfmod 类(或其子类)或是包含了 mod 模块的类(或其子类)的实例时,返回 true。

module M
end
class C < Object
  include M
end
class S < C
end

obj = S.new
p obj.is_a? S       # true
p obj.is_a? M       # true
p obj.is_a? C       # true
p obj.is_a? Object  # true
p obj.is_a? Hash    # false
method(name)

返回对象中名为 name 的 Method 对象。 name 可以是 符号 或者字符串。

nil?

检查调用者是否为 nil。

respond_to?(name[, priv=false])

如果该对象有公共方法 name 的话,返回 true 。

name 可以是 符号 或者字符串。 如果参数 priv 的默认值为true ,那么即使 name 是私有方法,函数也依旧返回 true 。

send(name[, args ... ])
send(name[, args ... ]) { .... }

将 args 作为参数,调用 name 方法,并返回方法的返回值。

当然,包含着块的数据也是可以传递的。方法名 name 可以是字符串或者 符号 。

object_id

返回与每个对象对应的独特整数。一个对象得到怎样的ID是不确定的。

to_ary

需要将对象隐式转为数组时,在内部自动调用。

to_hash

需要将对象隐式转为哈希表时,在内部自动调用。

to_int

需要将对象隐式转为整数时,在内部自动调用。

to_s

返回对象的字符串形式,由 print 和 sprintf 在内部调用。

传递非字符串对象给 print 和 sprintf ,做参数时,调用此方法将对象转成字符串。

to_str

需要将对象暗中转为字符串时,在内部自动调用。

私有方法

initialize

用户定义的类所使用的初始化方法。此方法是由 Class#new 调用来初始化新生成的对象。预设情况下,没有任何动作;假定此方法会在子类中依照需求重新定义。若是向  Class#new 传递了任何参数,则会原封不动的传递给 initialize