Uso de la declaraci贸n Ruby Case (Switch)

Uso de la declaraci贸n Ruby Case (Switch)

en la mayor铆a de los lenguajes de computadora , la instrucci贸n case o condicional (tambi茅n conocida como  switch ) compara el valor de una variable con el de varias constantes o literales y ejecuta la primera ruta con un caso coincidente. en ruby , es un poco m谩s flexible (y potente).

en lugar de realizar una simple prueba de igualdad, se utiliza el operador de igualdad de casos, lo que abre la puerta a muchos usos nuevos.

Sin embargo, hay algunas diferencias con otros idiomas. en c , una declaraci贸n de cambio es un tipo de reemplazo para una serie de declaraciones if y goto . los casos son t茅cnicamente etiquetas, y la declaraci贸n de cambio ir谩 a la etiqueta correspondiente. Esto exhibe un comportamiento llamado "fallthrough", ya que la ejecuci贸n no se detiene cuando llega a otra etiqueta.

Por lo general, esto se evita mediante una declaraci贸n de interrupci贸n, pero la falla a veces es intencional. la declaraci贸n del caso en ruby, por otro lado, puede verse como una abreviatura de una serie de declaraciones if . no hay fallthrough, solo se ejecutar谩 el primer caso coincidente.

la forma b谩sica de una declaraci贸n de caso

La forma b谩sica de una declaraci贸n de caso es la siguiente.

como puede ver, esto est谩 estructurado de manera similar a una declaraci贸n condicional if / else if / else. el nombre (que llamaremos el valor ), en este caso ingresado desde el teclado, se compara con cada uno de los casos de las cl谩usulas when (es decir,  casos ), y el primer bloque when con un caso coincidente se ejecutar谩. Si ninguno de ellos coincide, se ejecutar谩 el bloque else .

Lo interesante aqu铆 es c贸mo se compara el valor con cada uno de los casos. como se mencion贸 anteriormente, en c ++ y otros lenguajes similares a c, se utiliza una comparaci贸n de valores simple. en ruby, se usa el operador de igualdad de casos.

recuerde que el tipo del lado izquierdo de un operador de igualdad de casos es importante, y los casos son siempre el lado izquierdo. entonces, para cada cl谩usula when , ruby 鈥嬧媏valuar谩 el valor del caso === hasta que encuentre una coincidencia.

si tuvi茅ramos que ingresar bob , ruby 鈥嬧媝rimero evaluar铆a "alice" === "bob" , lo cual ser铆a falso ya que string # === se define como la comparaci贸n de las cadenas. a continuaci贸n, /[qrzfont>.+/i === "bob" se ejecutar谩, lo cual es falso ya que bob no comienza con q, r o z.

Como ninguno de los casos coincide, Ruby ejecutar谩 la cl谩usula else.

c贸mo entra en juego el tipo

Un uso com煤n de la declaraci贸n del caso es determinar el tipo de valor y hacer algo diferente dependiendo de su tipo. Aunque esto rompe el tipeo habitual del pato de Ruby, a veces es necesario hacer las cosas.

esto funciona usando el operador de clase # === (t茅cnicamente, el m贸dulo # === ), que prueba si el lado derecho es_a? lado izquierdo.

La sintaxis es simple y elegante:

otra forma posible

si se omite el valor , la declaraci贸n de caso funciona de manera un poco diferente: funciona casi exactamente como una declaraci贸n if / else if / else. las ventajas de utilizar la declaraci贸n de caso sobre un caso de declaraci贸n, en este caso, son meramente cosm茅ticos.

una sintaxis m谩s compacta

Hay momentos en que hay una gran cantidad de peque帽as cl谩usulas when . Tal declaraci贸n de caso f谩cilmente crece demasiado para caber en la pantalla. cuando este es el caso (sin juego de palabras), puede usar la palabra clave then para colocar el cuerpo de la cl谩usula when en la misma l铆nea.

Si bien esto genera un c贸digo muy denso, siempre y cuando cada cl谩usula sea muy similar, en realidad se vuelve m谩s legible.

cuando debe usar una sola l铆nea y varias l铆neas cuando las cl谩usulas dependen de usted, es cuesti贸n de estilo. sin embargo, no se recomienda mezclar los dos: una declaraci贸n de caso debe seguir un patr贸n para que sea lo m谩s legible posible.

asignaci贸n de caso

como las declaraciones if, las declaraciones case eval煤an hasta la 煤ltima declaraci贸n en la cl谩usula when . en otras palabras, se pueden usar en tareas para proporcionar una especie de tabla. sin embargo, no olvide que las declaraciones de casos son mucho m谩s poderosas que las matrices simples o las b煤squedas hash. dicha tabla no necesariamente necesita usar literales en las cl谩usulas when .

si no hay coincidencia cuando la cl谩usula y ninguna otra cl谩usula, la declaraci贸n del caso se evaluar谩 como nula .



Continuar Leyendo >

Articulos relacionados a la energia