Gestire Funzioni come oggetti: differenze tra le versioni
Nessun oggetto della modifica |
Nessun oggetto della modifica |
||
| Riga 5: | Riga 5: | ||
Si tratta di assegnare il nome identificativo della ''Funzione'' o della ''Procedura'' ad una variabile di tipo ''Oggetto'', con la quale effettuare la chiamata con il metodo ''Object.Clall()'' . | Si tratta di assegnare il nome identificativo della ''Funzione'' o della ''Procedura'' ad una variabile di tipo ''Oggetto'', con la quale effettuare la chiamata con il metodo ''Object.Clall()'' . | ||
Mostriamo un semplice esempio: | ====Esempio in ambiente grafico==== | ||
Mostriamo un semplice esempio con applicazione in ambiente ''grafico''. | |||
'''Public''' Sub Form_Open() | |||
Dim i As Integer | |||
Dim ob As Object | |||
ob = FMain <FONT Color=gray>' ''E' possibile usare anche "Me" anziché FMain''</font> | |||
i = Object.Call(ob, "Somma", [3, 4]) | |||
Print i | |||
'''End''' | |||
'''Public''' Function Somma(a As Integer, b As Integer) As Integer <FONT Color=gray>' ''<--- La Funzione deve essere dichiarata come "Pubblica"''</font> | |||
Dim i As Integer | |||
i = a + b | |||
Return i | |||
'''End''' | |||
====Esempio con applicazione ''a riga di comando''==== | |||
Mostriamo un semplice esempio con applicazione''a riga di comando'': | |||
'''Public''' Sub Main() | '''Public''' Sub Main() | ||
| Riga 11: | Riga 39: | ||
Dim ob As Object | Dim ob As Object | ||
ob = | ob = Me | ||
i = Object.Call(ob, "Somma", [3, 4]) | i = Object.Call(ob, "Somma", [3, 4]) | ||
Versione delle 11:50, 27 mar 2016
Funzioni e Procedure, presenti in Moduli o in Classi specifiche, possono essere gestite e chiamate come oggetti, siano esse interne alla medesima Classe (o Modulo) di quella della funzione chiamante, oppure poste in una Classe (o Modulo) diversa da quella della funzione chiamante.
Funzioni e Procedure poste all'interno della medesima Classe o Modulo della funzione chiamante
Si tratta di assegnare il nome identificativo della Funzione o della Procedura ad una variabile di tipo Oggetto, con la quale effettuare la chiamata con il metodo Object.Clall() .
Esempio in ambiente grafico
Mostriamo un semplice esempio con applicazione in ambiente grafico.
Public Sub Form_Open() Dim i As Integer Dim ob As Object ob = FMain ' E' possibile usare anche "Me" anziché FMain i = Object.Call(ob, "Somma", [3, 4]) Print i End Public Function Somma(a As Integer, b As Integer) As Integer ' <--- La Funzione deve essere dichiarata come "Pubblica" Dim i As Integer i = a + b Return i End
Esempio con applicazione a riga di comando
Mostriamo un semplice esempio con applicazionea riga di comando:
Public Sub Main() Dim i As Integer Dim ob As Object ob = Me i = Object.Call(ob, "Somma", [3, 4]) Print i End Public Function Somma(a As Integer, b As Integer) As Integer ' <--- La Funzione deve essere dichiarata come "Pubblica" Dim i As Integer i = a + b Return i End
Funzioni e Procedure poste in altra Classe o Modulo
Il Modulo o la Classe specifica deve avere, come intestazione, la parola chiave "Create". Inoltre, le Funzioni e le Procedure, presenti in Moduli o in Classi specifiche, saranno rappresentate dal metodo speciale _call(), che viene appunto dichiarato quando l'oggetto è usato come una funzione.
Le Funzioni e Procedure presenti in una Classe specifica possono essere chiamate anche mediante il metodo Object.Call(). In tal caso non si utilizzerà il metodo speciale _call() . La chiamata di Funzioni e Procedure possono essere effettuate con il metodo Object.Call() anche se esse sono presenti in un Modulo; ma in tal caso non deve essere presente nel Modulo la parola chiave "Create".
Mostriamo un esempio, nel quale si avrà un applicativo composto anche da un Modulo e da una Classe specifica, ciascuno contenente una funzione.
Il Modulo, che chiamaremo Module1, sarà così scritto:
Create Public Function _call(i As Integer) As Integer Return i * 10 End
La Classe specifica, che chiameremo Class1, sarà così scritta:
Create Public Function _call(s As String) As String Return s & " 10 = " End Public Procedure ClSub() Print "Procedura chiamata con 'Object.Call()'" End
Mentre la Classe principale dell'applicativo sarà la seguente:
Public Sub Form_Open()
Chiamata(Class1, Module1)
End
Public Procedure Chiamata(obCl As Object, obMod As Object)
Dim i As Integer
Dim s As String
s = obCl("7 x")
i = obMod(7)
Print s; i
' Chiamata di Funzione qui con il metodo "Object.Call()":
Object.Call(obCl, "ClSub", Null)
End