realbasic-nug.it
[Top] [All Lists]

Re: La parola chiave Assigns

To: REALbasic NUG Italian <realbasic-nug dot it at lists dot realsoftware dot com>
Subject: Re: La parola chiave Assigns
From: Massimo Valle <maxduepuntozero at yahoo dot it>
Date: Fri, 28 Dec 2007 15:19:31 +0100
Delivered-to: listarchive at realsoftware dot com
Delivered-to: realbasic-nug dot it at lists dot realsoftware dot com
References: <687632 dot 61844 dot qm at web27307 dot mail dot ukl dot yahoo dot com>

On 28/dic/07, at 13:57, Richard Burns wrote:

Salve tutti.

E' la prima volta che scrivo in questa lista, e volevo porvi il seguente quesito:

Sul manuale utente del RealBasic viene spiegato a pagina 304 l'utilizzo della

  parola chiave Assigns.


Ciao Marco,

la tua osservazione non è sbagliata e, in effetti RB non si comporta molto bene in questo caso. Però non dimentichiamo che la possibilità di assegnare un parametro ad un metodo tramite l'operatore = è quello che viene definito syntactic sugar. Cioè un metodo per rendere il codice più leggibile, dove invece la funzionalità rimane la stessa.
Quindi scrivere qualcosa del tipo

a = LaMiaFunzione = c

non mi pare più bello di

a = LaMiaFunzione(c)

e secondo me viene meno l'utilità di Assigns, mentre a livello di compilatore viene comunque ridotto alla forma classica.

In pratica, Assigns viene usato per i metodi che non ritornano nessun valore (Sub). Spesso per simulare una proprietà di una classe creando un metodo che si comporta come una proprietà. Per esempio, volendo rispettare la regola non scritta che ogni classe non dovrebbe esporre direttamente le proprietà, si possono creare dei metodi "setter" e "getter" per la proprietà in questione (che rimane privata) e in questo caso Assigns diventa utile. Supponendo di avere una proprietà mNumero si potrà dotare la classe dei seguenti metodi

Sub Numero(assigns n as integer)
  mNumero = numero
End Sub

Function Numero() as integer
  return mNumero
End Funcion

e sarà quindi possibile continuare ad utilizzare Numero come se fosse una proprietà della classe, sintatticamente parlando:

a = myInstance.Numero
myInstance.Numero = a

Spero di avere chiarito un poco.

Massimo Valle

<Prev in Thread] Current Thread [Next in Thread>