Ruby bloque
Usted ya sabe cómo Ruby define los métodos y cómo los llama. De manera similar, Ruby tiene el concepto de bloque.
- Un bloque se compone de una gran cantidad de código.
- Usted debe darle un nombre al bloque.
- El código de un bloque siempre está encerrado entre llaves {}.
- El bloque siempre se invoca desde una función que tiene el mismo nombre. Esto significa que si su bloque se llamatest, entonces debe utilizar la funcióntestpara llamar a este bloque.
- Puede utilizaryieldla sentencia para llamar al bloque.
Sintaxis
Aquí, aprenderá a usar una simpleyieldsentencia para llamar al bloque. También aprenderá a usar unayieldsentencia con parámetros para llamar al bloque. En los ejemplos, verá estos dos tipos deyieldsentencias.
yieldSentencia
Veamos un ejemplo de la sentencia yield:
Ejemplo
Pruébalo »
El resultado del ejemplo anterior es:
在 test 方法内 你在块内 你又回到了 test 方法内 你在块内
También puede pasar una sentencia yield con parámetros. A continuación se muestra un ejemplo:
Ejemplo
Pruébalo »
El resultado del ejemplo anterior es:
你在块 5 内 在 test 方法内 你在块 100 内
Aquí,yieldla sentencia yield va seguida de parámetros. Incluso puede pasar múltiples parámetros. En el bloque, puede colocar una variable entre dos barras verticales para aceptar parámetros. Por lo tanto, en el código anterior, la sentencia yield 5 pasa el valor 5 como parámetro al bloque test.
Ahora, observe la siguiente sentencia:
Aquí, el valor 5 se recibe en la variable i. Ahora, observe la siguiente sentencia puts:
La salida de esta sentencia puts es:
Si desea pasar múltiples parámetros, entoncesyieldla sentencia se verá así:
En este caso, el bloque se verá así:
Los parámetros se separan con comas.
Bloques y métodos
Usted ha visto cómo se relacionan los bloques y los métodos. Normalmente, usa la sentencia yield para invocar el bloque desde un método con el mismo nombre. Por lo tanto, el código se ve así:
Ejemplo
Este ejemplo es la forma más sencilla de implementar un bloque. Usted usayieldla sentencia yield para llamar al bloque test.
Pero si el último parámetro de un método va precedido de &, entonces puede pasar un bloque a ese método, y este bloque se puede asignar al último parámetro. Si * y & aparecen a la vez en la lista de parámetros, & debe colocarse después.
El resultado del ejemplo anterior es:
Hello World!
Bloques BEGIN y END
Cada archivo fuente de Ruby puede declarar un bloque de código que se ejecuta cuando se carga el archivo (bloque BEGIN), y un bloque de código que se ejecuta después de que el programa complete su ejecución (bloque END).
Ejemplo
Un programa puede contener múltiples bloques BEGIN y END. Los bloques BEGIN se ejecutan en el orden en que aparecen. Los bloques END se ejecutan en el orden inverso al que aparecen. Cuando se ejecuta, el programa anterior muestra el siguiente resultado:
BEGIN 代码块 MAIN 代码块 END 代码块Otras extensiones