35
I tienen un método que los rendimientos, que se parece:¿Hay formas mejores de evitar el "rendimiento" cuando no se pasa ningún bloque?
def a_method(*params)
# do something
yield
# do something else
end
Quiero este método para producir el bloque si un bloque se pasa en; y si no hay un bloque se pasa, el método debe saltarse sliently la sentense rendimiento sin chocar con algo como:
no block given (yield) (LocalJumpError)
Por supuesto, la forma más sencilla es cambiar el método a:
def a_method(*params, &block)
# do something
yield if block
# do something else
end
Pero ¿No hay formas más bonitas?
Tenga en cuenta que también es más rápido que capturar un bloque (con '& block'). –
¡genial! ¡Muchas gracias! – Tao
Estoy volviendo loco siempre olvidar el nombre de 'block_given?' –