Codice: Seleziona tutto
class executeBash : GLib.Object {
GLib.List<string> listaOccorrenze = new GLib.List<string>();
public bool processa_lettura(IOChannel canale, IOCondition condition) {
//Qui faccio cose ma, l'attività sostanziale è popolare la lista che ho
//definito globalmente a livello di classe:
this.listaOccorrenze.append("stringa appesa");
}
public List<string> BashExecuteWithPipes(string[] spawn_args, string[] spawn_env) {
//Qui faccio altre cose, ma la piu importante, è di chiamare il
//metodo qui sopra, e poi ritornare la lista generata lì sopra.
var esitoPiping = (uint)output.add_watch(GLib.IOCondition.IN | GLib.IOCondition.HUP, processa_lettura);
GLib.List<string> listaOut = new GLib.List<string>();
listaOut = this.listaOccorrenze.copy();
return listaOut;
}
}
La compilazione, mi restituisce questo errore, ed impedisce la compilazione:
Codice: Seleziona tutto
../src/executeBash.vala:64.3-64.40: error: Assignment: Cannot convert from `GLib.List<weak string>' to `GLib.List<string>?'
64 | listaOut = this.listaOccorrenze.copy();
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Chiedo quindi: Come si può dichiarare programmaticamente una List come globale, in modo da escludere l'assegnazione iniziale a weak? Oppure esiste un altro modo per procedere alla copia della lista, senza sollevare un errore di assegnazione debole(weak)?
Grazie