这两个类实例有什么区别?

时间:2015-03-25 10:49:54

标签: ruby-on-rails ruby

Moped::Collection个对象实例之间存在明显差异。 Item.collection对象的检查如下(添加了行结尾):

#<Moped::Collection:0x007fb381e3ed10
  @database=#<Moped::Database:0x007fb381e3fa30
    @name="production_datagatherer",
    @session=<Moped::Session
      seeds=[
        <Moped::Node resolved_address="22.22.22.22:43700">,
        <Moped::Node resolved_address="22.22.22.22:43700">
      ]
      database=production_datagatherer
    >
  >,
  @name="items"
>

Item.collection Moped::Collection对象具有以下实例变量:

@database: Moped::Database object
@name: "items"

@database变量的格式为#<Moped::Database:0x007fb381e3fa30,而@session实例变量的格式为Moped::Session,但格式不同。

  • @session的值不是对象吗?
  • 如果它们不是实例变量(seedsdatabase),它会有什么样的变量。

1 个答案:

答案 0 :(得分:1)

实际上要简单得多。 Moped::Session implements inspect method

def inspect
  "<#{self.class.name} seeds=#{cluster.seeds} database=#{current_database_name}>"
end

这就是它看起来与众不同的原因。默认情况下,inspect包含与Moped::Collection一样的实例变量。

使用inspect方法打印对象时,会调用

p方法,或将其返回到控制台。您可以阅读inspect here