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

Re: Comportamento normale, bizzarro o bug delle computed property?

To: REALbasic NUG Italian <realbasic-nug dot it at lists dot realsoftware dot com>
Subject: Re: Comportamento normale, bizzarro o bug delle computed property?
From: Massimo Valle <maxduepuntozero at yahoo dot it>
Date: Thu, 29 Nov 2007 11:08:44 +0100
Delivered-to: listarchive at realsoftware dot com
Delivered-to: realbasic-nug dot it at lists dot realsoftware dot com
References: <2CB96CDB-0313-4C48-B523-9FFD98CDD9A4 at menssana dot to dot it>

On 29/nov/07, at 10:39, Fabio Soggia wrote:

Dunque, il problema è che:

- se uso il p2 mi cambia la data e l'evento set viene richiamato
- se uso il p1 mi cambia la data, ma l'evento set NON viene richiamato

Ho cercato nei feddback. non trovando nulla.
Potete dirmi se è un comportamento normale che io ignoro, come tante altre cose, oppure se è un difetto?
Grazie, Fabio

ps: se serve posso inviare per mail il progetto

Direi che è un comportamento normale.
I metodi Get e Set della shared property si riferiscono ad un oggetto di tipo data e si attivano quando tu "chiedi" o assegni l'oggetto. Nel caso p2 il metodo Set viene richiamato perchè tu stai effettivamente assegnando un nuovo valore all'oggetto "data_corrente" (ma sarebbe più corretto dire un nuovo riferimento trattandosi di un oggetto e non di un data type intrinseco come una stringa). Nel caso p1 tu stai cambiando le proprietà dell' oggetto, ma non l'oggetto stesso. Quindi se ci fai caso viene invocato il metodo Get per ogni volta che tu imposti un proprietà dell'oggetto. Questo perchè richiami la proprietà.

Per riassumere, con p2 assegni effettivamente la proprietà, mentre con p1 manipoli solo le proprietà dell'istanza esistente.

Onde evitare di finire in ragionamenti da OOP di questo tipo, ti consiglio di usare come shared properties solo dei data type intrinsechi come integer, string, ecc. Non che quello che fai tu sia scorretto, ma richiede una valutazione accurata delle conseguenze. Come hai visto, usando la tua proprietà in un modo piuttosto che in un altro fa differenza.

Massimo Valle



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