Pourquoi voudriez-vous faire un module à partir d'un bloc?
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
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