Programación madre numérica Ruby
① Por qué es necesario inicializar cada ecuación
Initialize es una función de inicialización que se llama automáticamente al definir cada uno de esos objetos. En este caso no hay contenido, pero parte del contenido tiene subpropiedades del objeto especificado, etc. Dado que se llama automáticamente, se debe fijar en la parte superior con un método tan vacío incluso si no hay requisitos ni subpropiedades. .
②filtered = string.downcase.gsub(/[^a-zA-Z ]/, "")?#Este es ilegible
Traducción: primero haz lo siguiente con la cadena :
¿Cambiar todas las letras mayúsculas de la cadena a minúsculas?
II. Eliminar todas las letras de la cadena en minúscula,
? Luego reemplazar la cadena con la variable filtrada (sin cambiar la cadena en sí).
Sintaxis:
downcase
downcase!
Cambia todas las letras mayúsculas de la cadena a minúsculas.
downcase genera y devuelve una cadena modificada.
gsub(patrón, reemplazar)
gsub!(patrón, reemplazar)
gsub(patrón) {| coincidente...}
gsub!(patrón) {| coincidente| ....}
Utilice reemplazar para reemplazar todas las partes de la cadena que coincidan con el patrón. \& y \0 en reemplazo se reemplazan con la subcadena coincidente, y \1 ....\9 se reemplazan con el contenido en el enésimo corchete. En la cadena de reemplazo reemplazar, también puede usar \`, \' o \+. Corresponden a $`, $' y $+ respectivamente.
p 'abcabc'.gsub(/b/, '(\&)') ?#=> "a(b)ca(b)c"
Cuando se reemplaza omitido Cuando se pasa como parámetro, este método es equivalente a un iterador que se utiliza para reemplazar el resultado del cálculo del bloque. La subcadena coincidente se pasa como argumento al bloque de código. A diferencia de lo que ocurre sin un bloque de código, la variable interna $ se puede llamar dentro de un bloque de código.
p 'abcabc'.gsub(/b/) {|s| s.upcase } ??#=> "aBcaBc"
p 'abcabc'.gsub(/b /) { $&.upcase } ?#=> "aBcaBc"
gsub genera y devuelve la cadena reemplazada. gsub! se modifica self y devuelve el resultado, o nulo si no se realizan sustituciones.
p 'abcdefg'.gsub(/cd/, 'CD') ?#=> "abCDefg"
str = 'abcdefg'
str. gsub!(/cd/, 'CD')
p str ?#=> "abCDefg'
p 'abbbxabx'.gsub(/a(b+)/, '\ 1') ?#=> "abbbxbx"
Nota: No puede usar $ en el reemplazo. Esto se debe a que cuando se evalúa la cadena, aún no ha coincidido. Además, es necesario escaparla. dos veces en el reemplazo (Ver el efecto de trampa::\).
## Errores comunes al utilizar el segundo parámetro
p 'abbbcd'.gsub(/a(b+)/, "#{$1}") ?# Error
p 'abbbcd'.gsub(/a(b+)/, "\1") ?# Error
p 'abbbcd'.gsub(/a(b+)/, " \1 ")# Correcto
p 'abbbcd'.gsub(/a(b+)/, '\1') ?# Correcto
p 'abbbcd'.gsub(/ a( b+)/, '\1') # Correcto (más seguro)
p 'abbbcd'.gsub(/a(b+)/){ $1 }# Correcto (más seguro) ③ # Aquí ¿Para qué sirve? de split?
Divida el objeto de cadena y complete la matriz. Por ejemplo, si el valor filtrado arriba es "sas ss2d q", luego de llamar a split(""), se convertirá en ["sas. ", "ss2d", "q"]? ¡Tenga en cuenta que se convierte en una matriz! ! ! ) ④? ¿Para qué sirve #hash?
Una tabla hash (también llamada tabla hash) es una extensión de una matriz. Se diferencia de una matriz en que proporciona un índice para cada valor dentro. .
El método utilizado en el artículo es crear una nueva tabla hash. (Hay demasiadas cosas que saber sobre las tablas hash, por lo que debes aprenderlas por separado).
⑤¿Cuál es el papel de cada una en la ecuación?
Esta cosa larga es rara en un lenguaje tan intuitivo como Ruby, pero aparece con frecuencia en otros lenguajes, es un iterador. Lo que significa es que para cada x en c (esta x es ficticia y puede ser reemplazada por otra cosa), haga lo siguiente..., evitando así el problema de usar una variable de conteo.
6?# El signo de interrogación aquí es ~?
Muchos métodos integrados en Ruby tienen un signo de interrogación, que puede interpretarse como "devuelve verdadero si..."< / p>
Por ejemplo, el método fangfa? se puede expandir a if? fangfa
return ture
?else
return true ( es decir, if es verdadero), de lo contrario devuelve falso (es decir, else es verdadero)".
~ Si aún no entiendes, continúa preguntando~
Puede consultar el Manual de referencia de Ruby (use la búsqueda de Baidu), que tiene explicaciones muy detalladas.