Question

Je regardais cette ligne:

    extensions << Module.new(&block) if block_given?

Il semble créer un nouveau module et l'ajouter à un domaine.

Pourquoi voudriez-vous construire un module à partir d'un bloc? Le bloc peut être n'importe quoi et le tableau d'extensions devient imprévisible.

Éditer: Ceci appartient à la classe de base de Sinatra:

  def register(*extensions, &block)
    extensions << Module.new(&block) if block_given?
    extensions.each do |extension|
      extend extension
      extension.registered(self) if extension.respond_to?(:registered)
    end
  end
Était-ce utile?

La solution

Le code d’un bloc n’est plus "imprévisible". que le code dans un module créé sans utiliser de bloc. Si j'écris

module Foo
  def foo() "bar" end
end

ou

Foo = Module.new do
  def foo() "bar" end
end

Je reçois le même effet. Les deux vous permettent d'étendre les fonctionnalités d'une autre classe, ce qui est l'objectif de cette méthode.

Autres conseils

Dans ce cas, cela vous permet de passer un bloc & amp; à l'intérieur d'un élément, ce qui rend le code plus lisible.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top