programas - ¿Existe un documento de referencia definitivo para la sintaxis de Ruby?
ruby on rails (4)
Como sugirió la respuesta anterior, hay un esfuerzo por escribir una "especificación" en http://ruby-std.netlab.jp/ .
Tienes que tener cuidado con esa "especificación". No está hecho por los diseñadores de lenguaje, y básicamente están documentando lo que ven y no al revés. Se basa en 1.8.7 por lo que puede haber características en 1.9 que no estén cubiertas.
No puedo imaginarme recordando la sintaxis con un documento de 300 páginas. Para tener "sobre la mesa", esta hoja de trucos describe lo que desea: sintaxis condensada, palabras reservadas, etc. Esta es una alternativa de dzone .
Estoy buscando un documento definitivo sobre la sintaxis de Ruby. Conozco los documentos definitivos para la API básica y la biblioteca estándar, pero ¿qué pasa con la sintaxis? Por ejemplo, dicho documento debe cubrir: palabras reservadas, sintaxis de cadenas literales, reglas de denominación de variables / clases / módulos, todas las declaraciones condicionales y sus permutaciones, etc.
Sé que hay muchos libros y tutoriales, sí, pero cada uno de ellos es esencialmente un tutorial, cada uno con un rango de profundidad y enfoque diferentes. Todos ellos, por necesidad de brevedad y flujo narrativo, omitirán ciertos detalles del lenguaje que el autor considera insignificantes.
Por ejemplo, ¿sabía que puede usar una declaración de caso sin un valor de caso inicial, y luego ejecutará el primer verdadero cuando la cláusula? Cualquier libro o tutorial de Ruby puede o no cubrir esa funcionalidad particular menos conocida de la sintaxis del caso. No se trata en la sección "Programación de Ruby" sobre declaraciones de casos. Pero eso es solo un pequeño ejemplo.
Hasta ahora, la mejor documentación que he encontrado es el proyecto rubyspec, que parece ser un intento de escribir un conjunto de pruebas completo para el idioma. No está mal, pero es un poco difícil de usar desde un punto de vista práctico como desarrollador que trabaja en mis propios proyectos.
¿Me estoy perdiendo algo o realmente no hay un documento legible definitivo que defina toda la sintaxis de Ruby?
El único documento que se puede describir razonablemente como "definitivo" es el código fuente de parse.y en el árbol de fuentes parse.y .
El http://ruby-std.netlab.jp/ contiene un apéndice de 39 páginas con un resumen de la gramática. Sin embargo, tenga en cuenta que ISO Ruby es un subconjunto mínimo de la intersección de Ruby 1.8 y 1.9. IOW: no describe nada que esté solo en 1.8 o solo en 1.9 (por lo tanto, las adiciones de sintaxis en 1.9 como proceso de apuñalamiento y símbolos de hashes no se describen), ni describe todo en esa intersección. ISO Ruby es un poco como ISO HTML en ese sentido.
El proyecto RubySpec contiene especificaciones ejecutables para el lenguaje Ruby. Sin embargo, no contiene una especificación explícita de la gramática. La única especificación de la gramática está implícita en los propios ejemplos. Además, dado que RubySpec es una especificación basada en el ejemplo, solo puede mostrarle ejemplos específicos de código válido de Ruby, pero no puede decirle todos los posibles programas válidos de Ruby como podría hacerlo una especificación de gramática. Y, dado que RubySpec es en sí mismo un código ejecutable de Ruby, solo puede mostrarle ejemplos válidos, no válidos.
Lo último que podría considerarse definitivo es el libro The Ruby Programming Language de David Flanagan y Yukihiro "matz" Matsumoto.
Sin embargo, tenga en cuenta que "la totalidad de la sintaxis de Ruby" es una tarea bastante desalentadora, porque la sintaxis de Ruby es increíblemente complicada con una gran cantidad de casos extraños.
Este es un muy buen recurso de sintaxis de Ruby
http://www.cs.auckland.ac.nz/references/ruby/doc_bundle/Manual/man-1.4/syntax.html
Hay un borrador de un estándar de Ruby en las obras. Puede obtenerlo aquí: http://ruby-std.netlab.jp/
Su ejemplo sobre el case
y la programación Ruby está mal elegido. Cuando Programming Ruby presenta un case
(en la página 98 para la primera edición; 141 para la segunda edición), Thomas dice:
La expresión del
case
Ruby es una bestia poderosa: una vía múltipleif
usa esteroides. Y solo para hacerlo aún más poderoso, viene en dos sabores.
Luego explica brevemente las dos formas de usar el caso (con un objetivo explícito después del case
inicial y sin él). En realidad comienza con el estilo que dices que no menciona.
Sin embargo, su punto más grande no es irrazonable. Probablemente será útil tener un estándar.