¿Hay algún modo integrado para exigir que se pase un bloque a un método de Ruby? Me doy cuenta de que puedo hacer una excepción si block_given?
es falso, pero ¿hay alguna forma más agradable de hacerlo?¿Cómo requerir un bloque en Ruby?
18
A
Respuesta
22
Simplemente usando yield
.
Si incluye yield
en un método y un bloque es no dado, arroja un error.
poner esto en un archivo y ejecutarlo:
def needs_block
yield
end
needs_block
Se generará un error como este:
LocalJumpError: no block given
from (irb):14:in `needs_block'
from (irb):16
9
raise 'need block' unless block_given?
+1
Esta es la mejor respuesta, ya que no tiene efectos secundarios (es decir, llamar al bloque). –
Cuestiones relacionadas
- 1. Ruby: bloque de rendimiento de un bloque?
- 2. Usando 'return' en un bloque de Ruby
- 3. ruby debugger paso en un bloque directamente?
- 4. ¿Cómo creo un bloque/proc/lambda reutilizable en Ruby?
- 5. ¿Cómo puedo definir/nombrar un bloque en Ruby?
- 6. ¿Cómo pasar un bloque a otro en Ruby?
- 7. ¿Cómo finalizar la ejecución de un bloque en Ruby?
- 8. Bloque privado/protegido en Ruby?
- 9. Ruby array.select bloque multilínea
- 10. ¿Cuándo llamar a un "requerir" en Rails?
- 11. Recuperar de la falla de requerir/cargar en ruby
- 12. ruby: ¿puede un bloque afectar variables locales en un método?
- 13. Bloque DSL sin argumento en ruby
- 14. Ruby - salir del bloque IF
- 15. Bloque en Ruby en comparación con Smalltalk
- 16. Patrón de visitante en Ruby, o simplemente usa un bloque?
- 17. Tener un bloque/comando de Ruby falla silenciosamente sin un bloque de 'rescate' en blanco
- 18. Ruby: ¿es posible pasar un bloque como un param como un bloque real a otra función?
- 19. ¿Cómo inicializar la clase en bloque en Ruby?
- 20. ¿Es posible definir un bloque con argumentos predeterminados en Ruby?
- 21. ¿Es posible definir un bloque con argumentos opcionales en Ruby?
- 22. Diferencia entre bloque y bloqueo en Ruby
- 23. ¿Hay alguna manera más corta de requerir un archivo en el mismo directorio en ruby?
- 24. Requerir en nodejs
- 25. Reemplazando 'requerir' en Clojure?
- 26. ¿Cómo puedo requerir un atributo en una definición de clase?
- 27. ¿La mejor manera de requerir todos los archivos de un directorio en ruby?
- 28. ¿Cómo convierto un bloque a un proceso en una extensión Ruby 1.9 C?
- 29. Cómo liberar un bloque
- 30. Reescribe la función simple de ruby para usar un bloque
Está bien que era demasiado fácil :) Gracias! –