Ruby para novatos declaraciones condicionales y bucles

Ruby es uno de los idiomas más populares utilizados en la web. Hemos comenzado una nueva serie de capturas de pantalla aquí en Nettuts + que te presentará a Ruby, así como a los excelentes marcos y herramientas que acompañan el desarrollo de Ruby. En este capítulo, veremos cómo funcionan las instrucciones condicionales y los bucles en Ruby.


Alcanzar

  • Parte 1: Instalando Ruby y Comenzando
  • Parte 2: Variables, tipos de datos y archivos 
  • Parte 3: Trabajando con clases
  • Parte 4: Condicionales y Bucles

Ver Screencast


Condicional # 1: Declaración Si

La instrucción if es uno de los primeros tipos de bifurcaciones que aprendes al programar. Puedes adivinar lo que significa: si esto es cierto, haz una cosa; Si no lo es, haz otra cosa. En Ruby, estos son bastante fáciles de escribir:

name = "Andrew" si name == "Andrew" pone el final "Hello Andrew" si name == "Andrew" pone el término "Hello Andrew"; otra cosa pone el final "Hola alguien más"

Después de la palabra clave Si, código en su declaración condicional. Después de eso viene el código para ejecutar si la condición devuelve verdadero. Usted cierra la declaración con el fin palabra clave. Si lo desea, puede apretar una más declaración allí, que se ejecutará de manera predecible si la condición es falsa.

elsif

No es difícil verificar múltiples condiciones. Solo pon tantos elsif declaraciones como te gustaría entre el Si y más declaraciones Sí, esto es elsif, un matrimonio de más y Si.

order = : size => "medium" def make_medium_cofee pone "making medium statement" final # asume otras funciones si order [: size] == "small" make_small_coffee; elsif order [: size] == "medium" make_medium_coffee; elsif order [: size] == "large" make_large_coffee; else make_coffee; fin

Como mencioné, puedes tener tantos elsif Condiciones y sus correspondientes bloques de código que quieras..

Declaraciones vs. Expresiones

La mayoría de los lenguajes de programación hacen una distinción entre declaraciones y expresiones. Una declaración es una construcción de código que no se evalúa a un determinado valor. Una expresión es una construcción de código hace devuelve un valor. Por ejemplo, llamar a una función es una expresión, porque devuelve un valor. Sin embargo, una instrucción if es exactamente eso, una declaración, porque no devuelve un valor. Esto significa que no puedes hacer esto en tu JavaScript:

message = if (someTruthyValue) "esto es cierto";  else "esto es falso"; 

Obviamente, no puede hacer esto porque la instrucción if no devuelve un valor que puede asignar a mensaje.

Sin embargo, puedes hacer esto con Ruby, porque las declaraciones son en realidad expresiones, lo que significa que devuelven un valor. Entonces podemos hacer esto

mensaje = si orden [: tamaño] == "pequeño" "haciendo una pequeña" elsif orden [: tamaño] == "mediano" "haciendo que un medio" más "haga café" final

Cualquier bloque de código que se ejecute se convertirá en el valor de mensaje.

Si como modificador

Si no tienes ninguna elsif o más cláusulas, y su sentencia if tiene solo una línea, puede usarla como modificador de una línea "normal".

pone "hacer café" si customer.would_like_coffee?

Condicional # 2: a menos que la declaración

En la mayoría de los lenguajes de programación, queremos revertir el retorno de la expresión condicional, tenemos que negarlo, generalmente con la explosión (!) operador.

engine_on = true si! engine_on # significa "si no engine_on" pone "servicing engine" #no debe ser puesto, porque "no engine_on" es falso final

Sin embargo, Ruby tiene una muy buena. a no ser que operador, eso nos impide tener que hacer eso, al tiempo que nos da un código mucho más legible:

a menos que engine_on # "a menos engine_on" sea mejor que "si no engine_on" "service service engine" final

Al igual que Si, puedes usar a no ser que como modificador:

pone "motor de servicio" a menos que motor_on

Condicional # 3: Caso / Cuándo declaración

Si tienes muchas opciones para trabajar, usa si / elsif / else podría ser algo prolijo. Prueba la declaración del caso.

hora = 15 caso cuando hora < 12 puts "Good Morning" when hour > 12 horas < 17 puts "Good Afternoon" else puts "Good Evening" end

Es un poco sorta, tal vez como un interruptor / caja Declaración en JavaScript (u otros idiomas), excepto que no hay una variable que esté evaluando. Dentro de caso / final palabras clave, puedes poner tantas cuando Declaraciones como quieras. Sigue eso cuando por la expresión condicional, y luego las líneas de código van tras ella. Al igual que la sentencia if, la sentencia case es realmente una expresión, por lo que puede asignarla a una expresión y capturar un valor devuelto..

hora = 15 mensaje = caso cuando hora < 12 "Good Morning" when hour > 12 horas < 17 "Good Afternoon" else "Good Evening" end puts message

Rompiendo expresiones

Si está familiarizado con JavaScript, sabrá que los bloques de código en una instrucción if están rodeados por llaves. No hacemos esto en Ruby, por lo que puede parecer que Ruby depende del espacio en blanco. Nada podría estar más lejos de la verdad (toma eso, pythonistas :)).

Si queremos escribir sus declaraciones como de una sola línea, debemos separar las diferentes partes de las declaraciones ... ¿pero cómo? Bueno, puedes usar punto y coma:

si nombre == "Andrew"; some_code; más; some_code; fin

Si no te gusta el aspecto de eso (lo que no me gusta), puedes poner la palabra clave entonces entre las expresiones condicionales y la línea de código.

si nombre == "Andrew" entonces sode_code; fin

Esto también funciona para una declaración de caso.

caso cuando x> 20; pone "<20" when x < 20 then puts "<20" end

Loop # 1: While Loop

Entonces, esas son declaraciones condicionales (quiero decir, expresiones). ¿Qué hay de los bucles? Veamos mientras bucles primero.

Un bucle while continuará ejecutándose hasta que la condición declarada sea falsa:

arr = ["John", "George", "Paul", "Ringo"] i = 0 mientras que arr [i] pone arr [i] i + = 1 final

Aquí estamos repasando una matriz; cuando arr [i] devuelve falso (lo que significa que no quedan elementos en la matriz), el bucle dejará de ejecutarse. Dentro del bucle, imprimimos el elemento actual en la matriz y lo agregamos a nuestra variable de incremento.

También puedes usar mientras como modificador

arr = ["John", "George", "Paul", "Ringo"] i = -1 pone arr [i + = 1] mientras que arr [i]

Loop # 2: Hasta Loop

Al igual que a no ser que es lo opuesto a Si, hasta es lo opuesto a mientras. Continuará en bucle hasta que la condición sea verdadera:

days_left = 7; hasta que days_left == 0 pone "todavía hay # days_left en la semana" days_left - = 1 end

Y por supuesto, también es un modificador..

days_left = 8 pone "todavía hay # days_left - = 1 en la semana" hasta days_left == 1

Loop # 3: Para Loop

Sí, Ruby tiene un bucle for. No, no es como el bucle for en otros idiomas. Actúa como un bucle foreach, para recorrer en bucle los valores de una matriz o hash:

arr = ["John", "George", "Paul", "Ringo"] para el artículo en arr pone el artículo final

Si recorres un hash, puedes usar dos nombres de variables, uno para la clave y otro para el valor:

joe = : name => "Joe",: age => 30,: job => "fontanero" para la clave, val en joe pone "# key is # val" end

Eso es!

Espero que estés disfrutando de nuestra serie Ruby for Newbies Screencast. Si hay algo que te gustaría ver, házmelo saber en los comentarios. (Y si no estás viendo los videos, deberías estarlo. Hay una bonificación de solo captura de pantalla al final de cada uno).