Diferencia entre revisiones de «Programación en Vala/Funcionalidades avanzadas del lenguaje»

Contenido eliminado Contenido añadido
Sigmar (discusión | contribs.)
Sigmar (discusión | contribs.)
Línea 903:
</source>
 
Vala tiene soporte para los operadores de punteros que se usan en C, es decir, el operador '''dirección de (&)''' y el operador '''[http://es.wikipedia.org/wiki/Indirecci%C3%B3n indirección] (*)'''. El primer operador obtiene la dirección de memoria de un objeto (una referencia en vala) y el segundo obtiene el propio objeto a partir de un puntero (se usa para acceder al contenido del objeto):
 
<source lang=csharp>
Línea 911:
*i_ptr = 7; // Se modifica el valor del entero también mediante el operador indirección.
</source>
 
Cuando en lugar de valores primitivos (como en el caso anterior en el que se ha usado un entero) se usan referencia a objetos se pueden omitir los operadores, ya que, en este caso se están usando sobre referencias que apuntan a los objetos.
 
<source lang=csharp>
Foo f = new Foo();
Foo* f_ptr = f; // Se obtiene la dirección del objeto que apunta la referencia 'f'
Foo g = f_ptr; // Se obtiene el contenido del objeto y se apunta mediante una nueva referencia llamada 'g'
 
unowned Foo f_weak = f; // Esto es equivalente a la segunda línea de código
</source>
 
El uso de punteros es equivalente al uso de referencias sin propietario como se puede ver en el ejemplo de arriba en la última línea de código.
 
== Clases que no heredan de GLib.Object ==