2012-02-25 23 views
9

Estaba mirando la documentación de Ruby, y me pregunto si todo es un objeto, entonces las 'palabras clave' también son objetos, ¿correcto? Y si es así, ¿dónde están definidos en ruby?¿Dónde se definen las palabras clave en Ruby?

La página siguiente me confundió por completo porque mostraba el objeto con todas las palabras clave, sin embargo, este no es el objeto oficial utilizado por todas las clases, ¿está mezclado de alguna manera con una clase diferente?

http://ruby-doc.org/docs/keywords/1.9/Object.html

supongo que hay un montón de preguntas anteriores, la principal es: ¿cómo se meten en palabras clave rubí rubí?

+1

Si toma "todo es objeto" en ese sentido, entonces no es cierto. Las palabras clave no son objetos. Y otra cosa que no es un objeto que me confundió al principio es un bloque. Los bloques tampoco son objetos. – sawa

Respuesta

20

Las palabras clave no son objetos, pero se definen en el analizador que se puede encontrar en parse.y en la fuente de Ruby. Aquí está la parte pertinente de ese archivo:

reswords : keyword__LINE__ | keyword__FILE__ | keyword__ENCODING__ 
     | keyword_BEGIN | keyword_END 
     | keyword_alias | keyword_and | keyword_begin 
     | keyword_break | keyword_case | keyword_class | keyword_def 
     | keyword_defined | keyword_do | keyword_else | keyword_elsif 
     | keyword_end | keyword_ensure | keyword_false 
     | keyword_for | keyword_in | keyword_module | keyword_next 
     | keyword_nil | keyword_not | keyword_or | keyword_redo 
     | keyword_rescue | keyword_retry | keyword_return | keyword_self 
     | keyword_super | keyword_then | keyword_true | keyword_undef 
     | keyword_when | keyword_yield | keyword_if | keyword_unless 
     | keyword_while | keyword_until 
     ; 

Si quiere saber más sobre el programa de análisis de Ruby, mirar a la presentación Hacking parse.y de RubyConf 2009 o Parse.y famtour del Ruby Kaigi 2011.

Además, una gran cantidad de los métodos que están disponibles en todas partes (como, por ejemplo, puts) se definen en el módulo Kernel.

EDITAR: También hay un list of key words in the documentation, gracias @antinome para señalarlo.

+0

Gracias por la gran información ... jaja ... bonita presentación de Ruby Kaigi 2011, necesito repasar mi japonés. :) – Kamilski81

+0

Por lo que vale, aquí es donde la documentación de ruby ​​enumera las palabras clave: https://github.com/ruby/ruby/blob/trunk/doc/keywords.rdoc – antinome

+0

@antinome Gracias, incluido eso en la respuesta. :) –

Cuestiones relacionadas