Warum würden Sie ein Modul aus einem Block machen?
Frage
Ich war auf der Suche auf dieser Linie:
extensions << Module.new(&block) if block_given?
Es scheint ein neues Modul zu erstellen und fügen Sie es zu einem arry.
Warum werden Sie ein Modul aus einem Block obwohl bauen? Der Block könnte alles sein und dann die Erweiterungen Array wird unberechenbar.
Edit: Das ist von Sinatras Basisklasse:
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
Lösung
Der Code in einem Block ist nicht mehr „unberechenbar“ als der Code in einem Modul hergestellt, ohne einen Block zu verwenden. Ob ich schreibe
module Foo
def foo() "bar" end
end
oder
Foo = Module.new do
def foo() "bar" end
end
Ich bekomme die gleiche Wirkung. Beide ermöglichen es Ihnen, eine andere Klasse der Funktionalität zu erweitern, in dem der Zweck dieses Verfahrens ist.
Andere Tipps
In diesem Fall ist es Ihnen ein & Block innerhalb oneliner passieren läßt, der Code besser lesbar macht.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow