Un bloque de código, o bloque, es un grupo de cero o más expresiones que introduce un nuevo cuerpo en un ámbito. (Un bloque con cero expresiones sería un bloque vacío e, idealmente, solo se usaría como marcador de posición para completarlo más adelante).
Los bloques de código solo pueden aparecer después de identificadores.
Ámbito se refiere a la parte del programa donde la asociación de un nombre con un identificador (nombre) para un valor es válida y donde el nombre puede usarse para referir al valor. Por ejemplo, cualquier constante o variables que crees dentro de un bloque de código solo existe en el contexto del bloque de código. Esto significa que la vida útil de los objetos está limitada al ámbito en el que fueron creados y no pueden usarse fuera de dicho bloque de código.
El siguiente ejemplo muestra cómo calcular el número máximo de flechas que pueden comprarse con el número de monedas que tiene el jugador. La constante MaxArrowsYouCanBuy se crea dentro del bloque if y, por lo tanto, su alcance se limita al bloque if. Cuando se usa la constante MaxArrowsYouCanBuy en la cadena de impresión, produce un error porque el nombre MaxArrowsYouCanBuy no existe en el ámbito fuera 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 un máximo de {MaxArrowsYouCanBuy} flechas con tus monedas.") # Error: Identificador desconocido MaxArrowsYouCanBuy
Verse no admite la reutilización de un identificador incluso si se declara en un ámbito diferente, a menos que pueda calificar el identificador agregando (qualifying_scope:) antes del identificador, donde Qualifying_scope es el nombre del módulo, clase o interfaz de un identificador. Siempre que definas y uses el identificador, también debes agregar un calificador al identificador.
Para obtener más información, consulta módulo, clase e interfaz.
Formato de bloques de código
En Verse, un bloque de código tiene tres formatos posibles. Todos son semánticamente equivalentes, por lo que puedes 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, aún debes usar un identificador al comienzo del bloque de código anidado. Para anidar código, usa la expresión bloque.
Formato espaciado
Con este formato, el bloque comienza con :, 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 presente que if (test-arg-block) no forma parte del bloque sino que el bloque comienza al final de la línea con :.
También puedes usar ; para separar varias expresiones en una sola línea.
Formato reforzado de varias líneas
El bloque está encerrado por {}, y las expresiones están en líneas nuevas.
if (test-arg-block)
{
expression1
expression2
}
También puedes usar ; para separar varias expresiones en una sola línea.
Formato con punto de una línea
Con este formato, el bloque comienza con . con cada expresión en la misma línea y cada expresión se separa con ; en vez de colocarse en una línea nueva.
if (test-arg-block). expression1; expression2
Solo puedes usar un formato con punto de una línea en una expresión if que tenga un else, entonces solo puedes tener una expresión antes de else. Por ejemplo:
if (test-arg-block). expression1 else. expression2