Un bloque de código, o bloque, es un grupo de cero o más expresiones que introduce un nuevo cuerpo con ámbito. (Un bloque con cero expresiones sería un bloque vacío, e idealmente solo se utilizaría como marcador de posición para ser rellenado más tarde).
Los bloques de código solo pueden aparecer después de identificadores.
El ámbito se refiere a la parte del programa en la que es válida la asociación de un identificador (nombre) a un valor, y en la que ese nombre puede utilizarse para referirse al valor. Por ejemplo, todas las constantes o variables que crees dentro de un bloque de código solo existen en el contexto del mismo. Esto significa que la duración de los objetos se limita al ámbito en el que se crean y no pueden utilizarse fuera de dicho bloque de código.
El siguiente ejemplo muestra cómo calcular el número máximo de flechas que se pueden comprar con el número de monedas que tiene el jugador. La constante MaxArrowsYouCanBuy se crea dentro del bloque if y por lo tanto su ámbito se limita al bloque if. Cuando se utiliza la constante MaxArrowsYouCanBuy en la cadena de impresión, se produce un error porque el nombre MaxArrowsYouCanBuy no existe fuera del ámbito de la expresión if.
CoinsPerQuiver : int = 100
ArrowsPerQuiver : int = 15
var Coins : int = 225
if (MaxQuiversYouCanBuy : int = Floor(Coins / CoinsPerQuiver)):
MaxArrowsYouCanBuy : int = MaxQuiversYouCanBuy * ArrowsPerQuiver
Print("Puedes comprar como mucho {MaxArrowsYouCanBuy} flechas con las monedas que tienes.") # Error: Identificador desconocido MaxArrowsYouCanBuy
Verse no admite la reutilización de un identificador aunque esté declarado en un ámbito diferente, a menos que puedas calificar el identificador añadiendo (qualifying_scope:) antes del identificador, donde qualifying_scope es el nombre de un módulo, clase o interfaz del identificador. Siempre que definas y utilices el identificador, debes añadir también un calificador al identificador.
Para más información, véase módulo, clase e interfaz.
Formatos de bloques de código
Los bloques de código tienes tres formatos posibles en Verse. Todos son semánticamente equivalentes, por lo que se puede cambiar el estilo de un bloque de código sin cambiar lo que hace.
Si anidas un bloque de código dentro de otro bloque de código, debes seguir utilizando un identificador al principio del bloque de código anidado. Para anidar el código, utiliza la expresión block.
Formato con espacio
Con este formato, el bloque comienza por :, con cada expresión que sigue en su propia línea. Cada línea tiene una sangría uniforme de cuatro espacios.
if (test-arg-block):
expression1
expression2
Ten en cuenta que if (test-arg-block) no forma parte del bloque, sino que el bloque comienza al final de esa línea con :.
También puedes utilizar ; para separar varias expresiones en una sola línea.
Formato de varias líneas entre llaves
El bloque está cerrado por {}, y las expresiones se encuentran en líneas nuevas.
if (test-arg-block)
{
expression1
expression2
}
También puedes utilizar ; para separar varias expresiones en una sola línea.
Formato de una sola línea con punto
Con este formato, el bloque empieza por . con cada expresión en la misma línea, y cada expresión está separada por ; en vez de colocarse en una nueva línea.
if (test-arg-block). expression1; expression2
Si utilizas el formato de una sola línea con punto en una expresión if que tiene un else, solo puedes tener una expresión antes del else. Por ejemplo:
if (test-arg-block). expression1 else. expression2