Gambas-it

Gambas3 => Programmazione => Topic aperto da: vuott - 11 Dicembre 2018, 17:23:40

Titolo: Ora è possibile dichiarare le variabili locali in qualsiasi punto della routine
Inserito da: vuott - 11 Dicembre 2018, 17:23:40
Con l'aggiornamento Commit 82a9dca7 è possibile dichiarare le variabili locali in un qualsiasi punto della routine !
Il simbolo locale della variabile può essere utilizzato all'interno della routine, ma solo dopo la sua dichiarazione.

https://gitlab.com/gambas/gambas/commit/82a9dca733b1e285b257487ba9d15c3fb3b7d5cd


Esempio pratico:
Codice: [Seleziona]
Public Sub Main()

  Dim i As Integer
 
  i = 100000
 
  Print i
 

   Dim c As Short      ' <------------  '
 
   c = 20000
 
   Print c
 
End
Titolo: Re:Ora è possibile dichiarare le variabili locali in qualsiasi punto della routine
Inserito da: Gianluigi - 11 Dicembre 2018, 17:44:47
 ;D Stavo per dirti di mettere un esempio che mi hai anticipato  ;D

È come già in altri linguaggi, a me personalmente non piace perché rende più difficile la comprensione del codice altrui.
Forse, ma devo ancora provare, creare una variabile al volo può convenire nei loop.
Il rischio del caos è dietro l'angolo.  :bad:
Titolo: Re:Ora è possibile dichiarare le variabili locali in qualsiasi punto della routine
Inserito da: vuott - 11 Dicembre 2018, 17:46:11
...a me personalmente non piace perché rende più difficile la comprensione del codice altrui.
Il rischio del caos è dietro l'angolo.  :bad:

Sono pienamente d'accordo con te.
Titolo: Re:Ora è possibile dichiarare le variabili locali in qualsiasi punto della routine
Inserito da: kicco - 11 Dicembre 2018, 21:36:00
Citazione
creare una variabile al volo può convenire nei loop.
Anch'io l'ho istintivamente pensato.
Sulla leggibilità del codice altrui concordo, anche se con meno autorevolezza!
Dite un po' voi due (Gianluigi e Vuott) ma adesso andate pure d'accordo?  :P
 ;D
Titolo: Re:Ora è possibile dichiarare le variabili locali in qualsiasi punto della routine
Inserito da: vuott - 11 Dicembre 2018, 22:21:37
Dite un po' voi due (Gianluigi e Vuott) ma adesso andate pure d'accordo?
L'unico contrasto di rilievo sta nel fatto che Gianluigi non riesce a realizzare per me una macchina del tempo.  :-X
Titolo: Re:Ora è possibile dichiarare le variabili locali in qualsiasi punto della routine
Inserito da: Top Fuel - 11 Dicembre 2018, 22:37:48
Mah, non vedo l'utilità di questa cosa... ??? :-\
Titolo: Re:Ora è possibile dichiarare le variabili locali in qualsiasi punto della routine
Inserito da: akrobaticone - 12 Dicembre 2018, 08:46:02
una volta dichiarata rimane disponibile per altri loop
tanto vale dichiararla all'inizio
sembra derivata dal c++
Titolo: Re:Ora è possibile dichiarare le variabili locali in qualsiasi punto della routine
Inserito da: allegfede - 12 Dicembre 2018, 12:28:41
Non conosco l'implementazione dell'interprete gambas, ma forse la comodita' sta' nel fatto che quella variabile (area di memoria), appena si esce dall'ambito di competenza, viene distrutta (e la memoria rilasciata).

In questo modo si ottimizzerebbe l'uso della ram, ma a scapito di un maggior lavoro per il garbage collector (che mi dicono non esserci ....).
Titolo: Re:Ora è possibile dichiarare le variabili locali in qualsiasi punto della routine
Inserito da: Gianluigi - 12 Dicembre 2018, 17:36:32
Un ulteriore riflessione:
Codice: [Seleziona]
Public Sub Main()

   '' Speravo fosse possibile creare i loop così come succede in altri linguaggi:
   '' For n as Integer = 0 to 9 ma invece:
   
   Dim n As Integer
   For n = 0 To 9
     Dim v As Integer '' Ma quante volte viene riservata la memoria a v?
     Inc v
     Print v
     Print n
   Next
   Print "----------------------------"
   Print v
   Print n

End
In .Net la variabile v non esisterebbe al di fuori del blocco For.
Per ora non riesco a vedere un solo pregio...
Titolo: Re:Ora è possibile dichiarare le variabili locali in qualsiasi punto della routine
Inserito da: vuott - 12 Dicembre 2018, 22:37:05
...stranamente il primo valore della variabile "v", assunto all'interno del ciclo è uguale a... 9 !   ???
Titolo: Re:Ora è possibile dichiarare le variabili locali in qualsiasi punto della routine
Inserito da: Gianluigi - 13 Dicembre 2018, 08:30:54
...stranamente il primo valore della variabile "v", assunto all'interno del ciclo è uguale a... 9 !   ???

Così ora ha senso, non deve aggiornare lo spazio a ogni ciclo.
Titolo: Re:Ora è possibile dichiarare le variabili locali in qualsiasi punto della routine
Inserito da: vuott - 13 Dicembre 2018, 12:04:30
...ma la variabile "v" dovrebbe risultare uguale a zero all'inizio del ciclo !
Titolo: Re:Ora è possibile dichiarare le variabili locali in qualsiasi punto della routine
Inserito da: Gianluigi - 13 Dicembre 2018, 17:53:55
Veramente controllando a me da zero  :-\