在许多语言中,对象内部(例如类实例)可以使用:autocmd
的概念。考虑以下通用伪代码:
this
在这里class Foo {
int x;
constructor() {
this.x = 10;
}
}
从内部访问对象。它可以以多种方式有用。
现在,我找不到如何从Ruby类内部访问this
的方法。我看到属性可以通过this
前缀访问,方法可以通过其名称访问,但是这些只是实例的一部分,而不是实例本身。所以问题是:我们如何从该对象内部访问完整的Ruby对象?
答案 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)