Autore Topic: I tre puntini per passare argomenti extra a una funzione  (Letto 483 volte)

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.316
  • Ne mors quidem nos iunget
    • Mostra profilo
« 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.158
  • Tonno verde
    • Mostra profilo
Re:I tre puntini per passare argomenti extra a una funzione
« Risposta #1 il: 15 Dicembre 2020, 15:30:16 »
Allego due varianti della Funzione Variadica (semplice e controllata), che credo riescano meglio a far comprendere l'uso dei tre puntini rispetto a quanto detto su Gambas One.
L'applicazione pratica andrebbe cercata nella necessità di avere una funzione o meglio una classe che possa accettare da zero a tot argomenti per magari rispondere a degli errori oppure a degli argomenti che arrivano da un record di database ecc.

Ricordo di aver visto in passato del codice di md9327, una classe che usava il metodo speciale _unknown, purtroppo malgrado io l'abbia cercata in lungo e in largo non sono riuscito a scovarla, se qualcuno di voi ne è in possesso oppure sa dove è allegata mi farebbe cosa assai gradita dicendomelo.

Le due funzioni dovrebbero rispondere alla domanda su rosettacode.org

P.S. Nella funzione controllata si era smarrito l'ultimo Print...
« Ultima modifica: 15 Dicembre 2020, 15:48:20 da Gianluigi »
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.316
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:I tre puntini per passare argomenti extra a una funzione
« Risposta #2 il: 15 Dicembre 2020, 16:04:57 »
Ricordo di aver visto in passato del codice di md9327, una classe che usava il metodo speciale _unknown, purtroppo malgrado io l'abbia cercata in lungo e in largo non sono riuscito a scovarla, se qualcuno di voi ne è in possesso oppure sa dove è allegata mi farebbe cosa assai gradita dicendomelo.

Lo trovi qui (due righe prima del pezzo di codice da lui inserito):
   https://www.gambas-it.org/smf/index.php?topic=2268.msg25881#msg25881
« 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.158
  • Tonno verde
    • Mostra profilo
Re:I tre puntini per passare argomenti extra a una funzione
« Risposta #3 il: 15 Dicembre 2020, 16:33:03 »

Lo trovi qui (due righe prima del pezzo di codice da lui inserito):
   https://www.gambas-it.org/smf/index.php?topic=2268.msg25881#msg25881

Ti ringrazio molto della segnalazione, temo che purtroppo non sia quello che cercavo, ma potrebbe benissimo essere che ricordo male.
Io ricordavo un programma Gambas scritto da mdxxxx (senz'altro in Gambas2) che conteneva il metodo speciale _unknown(...) però all'epoca non ero in grado di capirlo ora che forse potrei non lo trovo più  :'(

Ma può essere benissimo che mi confonda con quanto da te indicatomi   :)
Oltre a tutto non so neanche da quanto tempo il metodo _unknown è stato introdotto...

 :ciao:
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.316
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:I tre puntini per passare argomenti extra a una funzione
« Risposta #4 il: 15 Dicembre 2020, 16:44:40 »
Io ricordavo un programma Gambas scritto da mdxxxx (senz'altro in Gambas2) che conteneva il metodo speciale _unknown(...)
Nelle Classi "PgConfigGroup.class " e "PgConfigItem.class ", i quali codici sono contenuti nel file compresso allegato da md9327 a quel suo post, è contenuto appunto il Metodo nascosto da te richiamato.
C'è in entrambe le Classi questa routine:
Codice: [Seleziona]
Public Sub _unknown(...) As Variant
  If (Param.Count = 0) Then
    Me.FireUnknownProperty(Param.Name)
  Else
    Me.FireUnknownMethod(Param.Name)
  Endif
  Return Null
End
e il Metodo "_unknown(...)" ha infatti i tre puntini !


Oltre a tutto non so neanche da quanto tempo il metodo _unknown è stato introdotto...
Bisognerebbe ovviamente domandare in Mailing List.
« Ultima modifica: 15 Dicembre 2020, 16:50:18 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.158
  • Tonno verde
    • Mostra profilo
Re:I tre puntini per passare argomenti extra a una funzione
« Risposta #5 il: 15 Dicembre 2020, 16:54:33 »

Nelle Classi "PgConfigGroup.class " e "PgConfigItem.class ", i quali codici sono contenuti nel file compresso allegato da md9327 a quel suo post, è conuto appunto il Metodo nascosto da te richiamato.
C'è in entrambe le Classi questa routine:
Codice: [Seleziona]
Public Sub _unknown(...) As Variant
  If (Param.Count = 0) Then
    Me.FireUnknownProperty(Param.Name)
  Else
    Me.FireUnknownMethod(Param.Name)
  Endif
  Return Null
End
e il Metodo "_unknown(...)" ha infatti i tre puntini !


SI! Hai ragione  :-* era quello che cercavo!

Mi sono proprio rincoglionito anche indicandomela non l'ho vista, figurati avevo del bello a trovarla  ;D

Comunque vedo con un certo piacere che rincoglionito o no, anche lui l'ha usata più o meno come ho fatto io nelle funzioni allegate  :D

Grazie ancora  :ciao:
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.316
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:I tre puntini per passare argomenti extra a una funzione
« Risposta #6 il: 15 Dicembre 2020, 17:06:28 »
Credo che quando md9327 nella sua lunga spiegazione scrive:

Il terzo metodo viene chiamato quando, ad esempio, si esegue una chiamata ad una proprietà o metodo inesistenti nell'oggetto, ........
suppongo intenda dire "quarto" metodo - ossia appunto "_unknown(...) " - , dato che nel capoverso precedente comincia con le parole "Il secondo e il terzo metodo...... ".  :-\
« Ultima modifica: 15 Dicembre 2020, 17:07:48 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.158
  • Tonno verde
    • Mostra profilo
Re:I tre puntini per passare argomenti extra a una funzione
« Risposta #7 il: 15 Dicembre 2020, 17:28:23 »
Credo che quando md9327 nella sua lunga spiegazione scrive:

Il terzo metodo viene chiamato quando, ad esempio, si esegue una chiamata ad una proprietà o metodo inesistenti nell'oggetto, ........
suppongo intenda dire "quarto" metodo - ossia appunto "_unknown(...) " - , dato che nel capoverso precedente comincia con le parole "Il secondo e il terzo metodo...... ".  :-\

Si è esattamente come dici tu Param.Count di _unknown restituisce il numero di parametri e se sono zero...

 :ciao:

Ma ... non hai neanche dato un'occhiata alle mie funzioni  :'(
« Ultima modifica: 15 Dicembre 2020, 17:30:55 da Gianluigi »
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.316
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:I tre puntini per passare argomenti extra a una funzione
« Risposta #8 il: 16 Dicembre 2020, 05:36:52 »
Ma ... non hai neanche dato un'occhiata alle mie funzioni  :'(
ok

Sull'argomento in sé potresti farne una pagina della nostra wiki.
« Ultima modifica: 16 Dicembre 2020, 05:40:48 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 kicco

  • Senatore Gambero
  • ******
  • Post: 1.703
  • So dove andare, seguitemi, ci perderemo insieme!
    • Mostra profilo
Re:I tre puntini per passare argomenti extra a una funzione
« Risposta #9 il: 16 Dicembre 2020, 14:44:34 »
Citazione
Sull'argomento in sé potresti farne una pagina della nostra wiki.

Dal titolo:
"Non hai neanche dato un'occhiata alle mie funzioni!"
 :P
Chi ha paura muore ogni giorno, chi non ha paura muore una volta sola. (Paolo Borsellino)

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.316
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:I tre puntini per passare argomenti extra a una funzione
« Risposta #10 il: 16 Dicembre 2020, 16:42:28 »
Dal titolo:
"Non hai neanche dato un'occhiata alle mie funzioni!"
 :P

Eeeeh... chi tralascia di occuparsi del Componente gb.map, si riduce a scherzare co' 'ste battutine ! 

« 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.158
  • Tonno verde
    • Mostra profilo
Re:I tre puntini per passare argomenti extra a una funzione
« Risposta #11 il: 16 Dicembre 2020, 19:39:30 »
Citazione
Sull'argomento in sé potresti farne una pagina della nostra wiki.

Dal titolo:
"Non hai neanche dato un'occhiata alle mie funzioni!"
 :P

Grazie del suggerimento  ;D

Nella Farm ho aggiunto un esempio denominato VariadicFunction che credo sia ancora più esplicativo.

 :ciao:
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.316
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:I tre puntini per passare argomenti extra a una funzione
« Risposta #12 il: 16 Dicembre 2020, 20:46:43 »
Citazione
Sull'argomento in sé potresti farne una pagina della nostra wiki.

Dal titolo:
"Non hai neanche dato un'occhiata alle mie funzioni!"
 :P

Grazie del suggerimento  ;D

Bravo ! Dagli pure man forte !
Tra poco kicco non ricorderà nemmeno che esiste un Componente chiamato gb.map !!!
« 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 vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.316
  • Ne mors quidem nos iunget
    • Mostra profilo
« 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.158
  • Tonno verde
    • Mostra profilo
Re:I tre puntini per passare argomenti extra a una funzione
« Risposta #14 il: 11 Gennaio 2021, 23:09:58 »

Sull'argomento in sé potresti farne una pagina della nostra wiki.

Aggiunta una paginetta nello wiki:
https://www.gambas-it.org/wiki/index.php?title=Passare_a_una_funzione_un_numero_imprecisato_di_argomenti

 :ciao:
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro