ruby - Ruby 中的类名别名

标签 ruby class

<分区>

我有一个类,我想在使用它时用两个不同的名称来引用它。我能想到的唯一方法是。

class Entrance

  def open
    puts "the door is open"
  end

end

class Exit < Entrance
end

问题是,在这个例子中,我想表示入口和导出是完全相同的东西,而不是导出是入口的一种。有没有更好的方法来表示这个?

最佳答案

简单易行:

Exit = Entrance

Ruby 中的类实际上只是类 Class 的对象,这些对象被分配给带有名称的常量。因此,只需让一个新常量引用与旧常量相同的对象即可。

请注意,现在 Exit 和 Entrance 是完全同一个类,您对一个类所做的任何事情都会发生在另一个类上:

2.0.0p0 :009 > Exit.object_id == Entrance.object_id
 => true

注意:虽然这是可能的,但我会更仔细地考虑您的总体架构。入口和导出之间有什么区别吗?他们都是真正的门吗?您的体系结构应该(通常)不需要为类设置别名,除非您有两个您真的想同时使用的同义名称,例如 PageWebPage(我也建议不要这样做)。

关于ruby - Ruby 中的类名别名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21244375/

相关文章:

javascript - 如何正确地将 JS 代码组织成更传统的类结构?

ruby - Ruby 中的 substr 是什么?

ruby-on-rails - 试图让 Twitter 光标与 api 一起工作

c++ - 将代码从一个类移动到一个新类时出现问题?

Java - 使用 Point 类返回二维数组中的位置值

php - 如何使用 {'property-names-like-this' 声明动态 PHP 类 }

java - 旧的 "Java Could not find Main Class"错误

ruby - 在 Nokogiri 对象上使用 ruby​​ "send"作为 page.send(a) 其中 ="at(' div.class-name')"

Ruby/安装包 - 在 Windows 中设置 Ruby 环境的最快方法是什么?

ruby - 在创建第二个对象之前不调用终结器,除非使用 weakref