“ this”的Ruby类似物(从内部访问类实例)

时间:2018-11-29 13:09:20

标签: ruby oop

在许多语言中,对象内部(例如类实例)可以使用:autocmd的概念。考虑以下通用伪代码:

this

在这里class Foo { int x; constructor() { this.x = 10; } } 从内部访问对象。它可以以多种方式有用。

现在,我找不到如何从Ruby类内部访问this的方法。我看到属性可以通过this前缀访问,方法可以通过其名称访问,但是这些只是实例的一部分,而不是实例本身。所以问题是:我们如何从该对象内部访问完整的Ruby对象?

2 个答案:

答案 0 :(得分:3)

在红宝石中,您应该使用self而不是this,这是等效的。

现在,实例和类方法之间有所不同。

请参见示例:

class Person < ActiveRecord::Base
   def self.class_method_example
     return self
   end

   def instance_method_example
     return self
   end
end

在第一种情况下,我们可以将类与结果进行比较:

Person.class_method_example == Person  # this returns true

在第二个中,我们只能使用Person实例调用该方法:

Person.first.instance_method_example  == Person.first # this returns true

更新 在第二个示例中,我假设扩展ActiveRecord::Base以使用first方法

答案 1 :(得分:2)