Bien, solo para mis propias notas, he ido y lo he estudiado más de cerca y, construyendo en Holger Just's answer, se presenta lo siguiente: el uso de corchetes en Ruby se puede dividir en 6 usos, 3 de ellos una parte de las definiciones de métodos de Ruby y 3 de ellas construcciones semánticas.
definición del método de creación
de objetos a través de los métodos de la clase Array :: [], Hash :: []
Array.[](1,2,3) #=> [1,2,3] #Un-sugared notation
Array["a","b","c"] #=> ["a","b","c"] #Sugared equivalent
Hash["a", 100, "b", 200] #=> {"a"=>100, "b"=>200}
nada que ver con los constructores literales, aunque sí la la misma cosa.
Referencia de elementos mediante métodos de instancia Array # [], Bignum # [], Continuación # [], Fixnum # [], Hash # [], MatchData # [], Método # [], ProC# [], Cuerda # [], Struct # [], símbolo # [], hilo # [], y métodos de la clase Dir :: [], ENV :: []
ary = [1,2,"abc", [15,16,[26,27]]]
ary.[](2) #=> "abc" #Un-sugared notation
ary[2] #=> "abc" #Sugared equivalent
ary[0,2] #=> [1,2]
ary[3][2][1] #=> 26
[1,2,3][0] #=> 1
"Is a string"[7,3] #=> "rin"
asignación de elementos a través de los métodos de instancia de array # [] =, de almohadilla # [] =, string # [] =, Struct # [] =, hilo # [] =, y ENV método de clase :: [] =
ary = [1,2,3]
ary.[]=(1,"abc") #=> [1,"abc",3] #un-sugared notation
ary[2] = "def" #=> [1,"abc","def"] #Sugared equivalent
hash = {"a"=>1, "b"=>2}
hash["a"] = 3 #=> {"a"=>3, "b"=>2}
construcciones semánticas
creación de objetos a través del constructor literal array
ary = []
Hay un montón de constructores literales en Ruby que crear un objeto de la clase correspondiente a través de la utilización de (por lo general) un par de símbolos simples, siendo los corchetes cuadrados el constructor literal de los objetos de matriz: Matriz []
, Hash {}
, Proc ->(){}
, Rango ..
y ...
, Regexp //
, Cadena ""
y ''
, Símbolo :
y :""
.
creación de objetos a través del% notación
%q[hello there you] #=> "hello there you" # String % notation
%w[hello there you] #=> ["hello", "there", "you"] # Array % notation
No es, estrictamente hablando, la notación de corchetes, sino más bien la notación de dos símbolos par de que se puede utilizar corchetes si lo desea.Entonces %[email protected] there [email protected]
es igualmente válido.
expresiones regulares
de Ruby
/[^A-Fa-f0-9]/
Los corchetes indican las clases de caracteres en las expresiones regulares de Ruby.
Encontré otro uso del []
, como un patrón para usar en el método Dir :: glob, pero se supone que actúa exactamente como lo hace en las expresiones regulares. Aún así, indica que posiblemente hay más usos escondidos en los más de 1500 métodos de Ruby.
Vaya a http://ruby-doc.org/core-1.9.3/ y escriba '[]' en el cuadro de búsqueda "Métodos", que le dará una lista de sus usos en el núcleo. Las clases complementarias pueden, por supuesto, proporcionar sus propias implementaciones para los operadores '[]' y '[] ='. –
¡Dé algunos ejemplos! – Ashe
[] y [] = los métodos no son un problema, ¿qué hay de% w [a b c] y [1,2,3] [1] indexación de matriz? ¿Qué más? '[]' está apareciendo por todos lados y estoy empezando a inquietarme por lo que no sé. –