Gambas-it

Gambas3 => Programmazione => Topic aperto da: vuott - 31 Luglio 2019, 13:38:05

Titolo: Array.ReadOnly è la nuova proprietà che rende un array di sola lettura
Inserito da: vuott - 31 Luglio 2019, 13:38:05
https://gitlab.com/gambas/gambas/commit/b11d422c1408327cfa209f24889f668b105ac905
Titolo: Re:Array.ReadOnly è la nuova proprietà che rende un array di sola lettura
Inserito da: akrobaticone - 31 Luglio 2019, 14:12:08
perdonate la domanda banale ma
perchè rendere un array read only?
se non voglio scriverci sopra evito tale operazione.
Titolo: Re:Array.ReadOnly è la nuova proprietà che rende un array di sola lettura
Inserito da: vuott - 31 Luglio 2019, 15:02:32
perdonate la domanda banale ma
perchè rendere un array read only?
se non voglio scriverci sopra evito tale operazione.
E' stata la prima domanda che mi sono posto anch'io...  :-\ banalmente.    ;D
Titolo: Re:Array.ReadOnly è la nuova proprietà che rende un array di sola lettura
Inserito da: kicco - 31 Luglio 2019, 15:19:03
mi associo!
Poi ho pensato (incredibile vero!!): "Se le modifiche all'array potessero essere fatte da differenti parti del programma? "
Poter bloccare l'array probabilmente evita di fare controlli o di generare una variabile esterna che "blocchi" o "sblocchi" la scrittura. :-\
 :ciao:
Titolo: Re:Array.ReadOnly è la nuova proprietà che rende un array di sola lettura
Inserito da: vuott - 31 Luglio 2019, 15:27:55
 :rolleyes:
Titolo: Re:Array.ReadOnly è la nuova proprietà che rende un array di sola lettura
Inserito da: vuott - 31 Luglio 2019, 15:33:11
La didascalia nella pagina dice che "una volta impostata, la proprietà non può essere disattivata".
Titolo: Re:Array.ReadOnly è la nuova proprietà che rende un array di sola lettura
Inserito da: akrobaticone - 31 Luglio 2019, 15:37:21
a meno che  in particolari programmi non si voglia in qualche modo "congelare" una immagine dell'array in un particolare istante
naturalmente i tentativi di scrittura sullo stesso non dovranno poi restituire un errore
boh.....
Titolo: Re:Array.ReadOnly è la nuova proprietà che rende un array di sola lettura
Inserito da: Gianluigi - 31 Luglio 2019, 18:08:08
Forse gli serviva per evitare una cosa tipo questa:

Codice: [Seleziona]
Public Sub Main()

  Dim aTypes As String[] = Desktop.Types
  ' Questo codice funziona con l'ultima master e se spuntato gb.desktop
  For Each s As String In aTypes
    Print s
  Next
  Try aTypes.Push("KDE")
  If Error Then Print Error.Text

End
Ottego in console:
Citazione
UBUNTU
GNOME
Read-only array
Titolo: Re:Array.ReadOnly è la nuova proprietà che rende un array di sola lettura
Inserito da: Top Fuel - 31 Luglio 2019, 22:27:11
Anche io non vedo l'utilità di questa nuova proprietà. :-\ :-\
Titolo: Re:Array.ReadOnly è la nuova proprietà che rende un array di sola lettura
Inserito da: Gianluigi - 31 Luglio 2019, 22:49:42
Forse in una classe, per uno che ha difficoltà a capire come funzionano le proprietà di sola lettura, potrebbe far comodo avere a disposizione un array pubblico read only.
Oppure anche solo per fare una prova di codice poi da sostituire con una proprietà  :-\
Titolo: Re:Array.ReadOnly è la nuova proprietà che rende un array di sola lettura
Inserito da: Gianluigi - 01 Agosto 2019, 09:56:13
Ecco il motivo, in realtà Property Read con le array non funzionava come ci si sarebbe aspettato.
Vedi progetto allegato

Ho cambiato l'esempio che era concettualmente sbagliato, così credo che sia comprensibile.
Titolo: Re:Array.ReadOnly è la nuova proprietà che rende un array di sola lettura
Inserito da: Gianluigi - 01 Agosto 2019, 13:49:37
Allora è stato confermato da Minisini, se vogliamo avere una proprietà realmente di sola lettura che ritorna un array occorre porre l'array a ReadOnly = True
https://lists.gambas-basic.org/pipermail/user/2019-August/067752.html
Titolo: Re:Array.ReadOnly è la nuova proprietà che rende un array di sola lettura
Inserito da: vuott - 01 Agosto 2019, 15:38:43
...quindi, mi sembra di capire, è necessaria nel caso di Classi create dal programmatore (?).
Titolo: Re:Array.ReadOnly è la nuova proprietà che rende un array di sola lettura
Inserito da: Gianluigi - 01 Agosto 2019, 15:44:12
Direi di si, ma mi sembra di capire solo in alcune circostanze.
Ho fatto una domanda per approfondire e aspetto una risposta, almeno spero...
Titolo: Re:Array.ReadOnly è la nuova proprietà che rende un array di sola lettura
Inserito da: Gianluigi - 02 Agosto 2019, 12:19:43
Si potrebbe concludere così:
Se occorre scrivere una classe contenente un array e vogliamo assolutamente essere certi che l'utente non possa scriverci, occorre impostare il suddetto con la proprietà ReadOnly = True.
Questo anche se lo ritornate da una proprietà di sola lettura.

 :ciao:
Titolo: Re:Array.ReadOnly è la nuova proprietà che rende un array di sola lettura
Inserito da: Top Fuel - 02 Agosto 2019, 14:19:32
Ma in una classe non è sufficiente dichiararlo Private per evitare che qualcuno da fuori ci metta le mani?
Eppoi se viene modificato significa che il programmatore ha messo delle istruzioni che puntano direttamente all'array, quindi la cosa dovrebbe essere intenzionale, o sbaglio?
Titolo: Re:Array.ReadOnly è la nuova proprietà che rende un array di sola lettura
Inserito da: Gianluigi - 02 Agosto 2019, 14:44:42
Mi spieghi come fai a rendere un array privato e al contempo farlo vedere al di fuori della classe, è una contraddizione in termini.
Titolo: Re:Array.ReadOnly è la nuova proprietà che rende un array di sola lettura
Inserito da: Gianluigi - 26 Novembre 2019, 16:45:15
Ho scritto una pagina della wiki su questo argomento, qui sotto il link:
https://www.gambas-it.org/wiki/index.php?title=Propriet%C3%A0_ReadOnly_dell%27Array_(propriet%C3%A0_di_sola_lettura) (https://www.gambas-it.org/wiki/index.php?title=Propriet%C3%A0_ReadOnly_dell%27Array_(propriet%C3%A0_di_sola_lettura))