def a(&block)
block.call(self)
end
et
def a()
yield self
end
conduisent au même résultat, si je suppose qu'il ya un tel bloc a {}
. Ma question est - depuis que je suis tombé sur un code comme ça, si cela fait une différence ou s'il y a un avantage d'avoir (si je ne pas utiliser la variable/bloc de référence autre):
def a(&block)
yield self
end
C'est cas concret où je ne comprends pas l'utilisation de &block
:
def rule(code, name, &block)
@rules = [] if @rules.nil?
@rules << Rule.new(code, name)
yield self
end
La documentation [Bloc Argument] (http://ruby-doc.org/core-2.4.1/doc/syntax/methods_rdoc.html#label-Block+Argument) montre différents cas d'utilisation. – Stefan
@Stefan J'ai ajouté un cas spécifique où je ne comprends pas l'utilisation de & block, peut-être que je manque quelque chose, alors vous pouvez jeter un oeil? En plus de cela, j'ai lu la documentation et cela correspond à ma compréhension. –
Si vous ne l'utilisez pas explicitement, ne l'ajoutez pas à la liste. Cela rend les invocations plus lentes et confuses. – ndn