Why would we put a module inside a class in Ruby?

In Ruby, I see that it can be useful to put classes inside modules for the sake of namespacing. I also see that it's possible to put modules inside classes. But I don't see why you'd do that.

Modules are generally mixed into classes, right? So, what would be the purpose of defining a module inside a class?

37
задан nbro 20 August 2017 в 23:55
поделиться

2 ответа

Думаю, на самом деле речь идет об использовании класса в качестве пространства имен, что иногда бывает удобнее, чем размещение всего в модуле. Я никогда не видел этого на практике, но в любом случае это совершенно правильный код Ruby.

Единственный реальный сценарий, который я могу придумать, - это использовать EventMachine в классе:

class Api
  def initialize
    EM.start_server "0.0.0.0", 8080, Server
  end

  module Server
    def receive_data (data)
      # do stuff
    end
  end
end
3
ответ дан 27 November 2019 в 04:38
поделиться
class Image
    module Colors
        Red = ...
        Blue = ...
    end
    include Colors
end

include Image::Colors

Image.new.set_pixel x, y, Red 
6
ответ дан 27 November 2019 в 04:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: