Autore Topic: Ora è possibile dichiarare le variabili locali in qualsiasi punto della routine  (Letto 841 volte)

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.721
  • Ne mors quidem nos iunget
    • Mostra profilo
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
« Ultima modifica: 11 Dicembre 2018, 17:38:24 da vuott »
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.239
  • Tonno verde
    • Mostra profilo
 ;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:
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.721
  • Ne mors quidem nos iunget
    • Mostra profilo
...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.
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline kicco

  • Senatore Gambero
  • ******
  • Post: 1.725
  • So dove andare, seguitemi, ci perderemo insieme!
    • Mostra profilo
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
Chi ha paura muore ogni giorno, chi non ha paura muore una volta sola. (Paolo Borsellino)

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.721
  • Ne mors quidem nos iunget
    • Mostra profilo
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
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline Top Fuel

  • Gran Maestro dei Gamberi
  • *****
  • Post: 959
    • Mostra profilo
Mah, non vedo l'utilità di questa cosa... ??? :-\
Dear youtube administrators, your search bar is broken. When I type the letter "J" it appears justin bieber when it should appear Jimi Hendrix. Fix this, please.

Offline akrobaticone

  • Gran Maestro dei Gamberi
  • *****
  • Post: 979
    • Mostra profilo
una volta dichiarata rimane disponibile per altri loop
tanto vale dichiararla all'inizio
sembra derivata dal c++
"e il naufragar m'è dolce in questo mar"

Offline allegfede

  • Gran Maestro dei Gamberi
  • *****
  • Post: 738
    • Mostra profilo
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 ....).
se corri, morirai stanco (motto degli sniper)

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.239
  • Tonno verde
    • Mostra profilo
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...
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.721
  • Ne mors quidem nos iunget
    • Mostra profilo
...stranamente il primo valore della variabile "v", assunto all'interno del ciclo è uguale a... 9 !   ???
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.239
  • Tonno verde
    • Mostra profilo
...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.
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.721
  • Ne mors quidem nos iunget
    • Mostra profilo
...ma la variabile "v" dovrebbe risultare uguale a zero all'inizio del ciclo !
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.239
  • Tonno verde
    • Mostra profilo
Veramente controllando a me da zero  :-\
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro