Ruby中的类名别名

Zac*_*ach 2 ruby class

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

class Entrance

  def open
    puts "the door is open"
  end

end

class Exit < Entrance
end
Run Code Online (Sandbox Code Playgroud)

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

Lin*_*ios 8

简单易用:

Exit = Entrance
Run Code Online (Sandbox Code Playgroud)

Ruby中的类实际上只是类的对象,Class它们的名称分配给常量.因此,只需要一个新常量引用与旧常量相同的对象.

请注意,现在退出和入口是完全相同的类,并且您对其中的任何操作都会发生在另一个上:

2.0.0p0 :009 > Exit.object_id == Entrance.object_id
 => true
Run Code Online (Sandbox Code Playgroud)

注意:虽然这是可能的,但我会更仔细地考虑您的一般架构.他们在入口和出口之间有什么区别吗?它们都只是真正的门吗?你的体系结构应该是这样的,除非你有两个你真正想要同时使用的同义名称,否则(通常)类不需要别名Page,WebPage(和我也建议不要这样).