"this"的 Ruby 模拟(从内部访问类实例)

标签 ruby oop

<分区>

在许多语言中,对象(例如类实例)内部都有一个 this 的概念。考虑这个通用的伪代码:

class Foo {
    int x;

    constructor() {
        this.x = 10;
    }
}

此处 this 提供从内部访问对象。它可以在许多方面发挥作用。

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

最佳答案

在ruby中,你应该使用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 方法

关于 "this"的 Ruby 模拟(从内部访问类实例),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53539792/

相关文章:

ruby-on-rails - 在 Mac OS 上安装 Rails 失败并出现多个错误

python - 如何在子类中创建基类列表

未找到 PHP 前端 Controller 类(命名空间)

oop - 区分代码中的拥有对象和引用对象?

java - 这是做我正在尝试的事情的正确方法吗?抽象静态变量?

ruby-on-rails - 合并两个列表,Ruby on Rails

ruby-on-rails - 如何在 Neo4j.rb 中定义这些所有者/成员关系?

ruby - CSV header_converters : :symbol giving inconsistent results

ruby-on-rails - 如何在 Ubuntu 11.10 上使用 libyaml 安装 Ruby?

c++ - 如何覆盖 C++ 中的函数