Diferencia entre revisiones de «Programación en Vala/Funcionalidades avanzadas del lenguaje»
Contenido eliminado Contenido añadido
Sin resumen de edición |
m Bot: Arreglando enlaces a proyectos Wikimedia y aplicando direcciones URL de protocolo relativo |
||
Línea 35:
</source>
Vala soporta las funcionalidades básicas de el [
<source lang=csharp>
Línea 252:
Implementa: '''Iterable <Entry<K,V>>''', '''Map <K,V>'''
Es un mapa en relación 1 a 1 de elementos de tipo '''K''' a elementos de tipo '''V'''. El mapeo se hace mediante el cálculo de un valor [
Se puede pasar opcionalmente una función de hash y un comparador al constructor de la siguiente forma:
Línea 449:
$ valac --thread threading-sample.vala
Esto incluirá las bibliotecas necesarias e inicializará el sistema de hilos cuando sea posible. El programa se ejecutará ahora sin producirse fallos de [
Es posible para un hilo comunicarle al sistema que ahora no necesita ejecutarse, y por lo tanto sugerir que sea otro hilo el que debería ejecutarse en lugar del primero, esto se realiza mediante el método estático '''Thread.yield()'''. Si esta sentencia se coloca al final del método '''main''' definido arriba, el sistema de ejecución pausará la ejecución del hilo principal por un instante y comprobará si hay otros hilos que pueden ejecutarse, encontrando el hilo creado recientemente en un estado de pausa y a la espera de ejecución, y ejecutará el nuevo hilo hasta la finalización del mismo, y el programa tendrá el comportamiento esperado. Sin embargo, no hay garantía de que esto pase así. El sistema tiene potestad para decidir cuando ejecuta los hilos, y de esta forma podría no permitir que el nuevo hilo termine antes de que el hilo principal es reiniciado y el programa finalice.
Línea 636:
</source>
Después de la sentencia '''yield'''; el resultado se puede devolver. De manera implícita, se puede realizar con un '''AsyncResult''' en el método '''callback'''. El método '''calback''' se parece mucho al concepto de [
El método '''end()''' es la sintaxis que se usa para el método '''_finishi'''. Toma un '''AsyncResult''' y devuelve el resultado real o lanza una excepción (si el método asíncrono lo hace). La llamada se realiza en el '''callback''' del método asíncrono de una forma similar a la siguiente:
Línea 646:
== Referencias débiles ==
La gestión de memoria en Vala se basa en el [
Sin embargo, es posible formar un ciclo de referencias con las estructuras de datos que el programador defina. Por ejemplo, con una [
En estos casos los objetos podrían mantenerse vivos simplemente referenciándose unos a otros, a pesar de que deberían ser liberados. Para romper este ciclo de referencias se pueden usar el modificador '''weak''' para una de las referencias:
Línea 901:
</source>
Vala tiene soporte para los operadores de punteros que se usan en C, es decir, el operador '''dirección de (&)''' y el operador '''[
<source lang=csharp>
Línea 926:
Las clases que no hereden en ningún nivel de GLib.Object son tratadas como un caso especial. Estas clases derivan directamente desde el sistema de tipos de GLib y por lo tanto son más ligeras (en uso de recursos).
Un caso obvio de este tipo de clases son algunos de los [
== Perfiles ==
|