Stringa, Casting implicito e la leggibilità degli assegnamenti

A volte i comuni costruttori di classe potrebbero risultare limitativi ai fini della comprensione dell'inizializzazione di istanze complesse. In queti giorni stavo - per puro diletto - rimettendo mano ad alcune mie librerie di Math nelle quali implementavo esempi di calcoli matriciali... disegnare entità matematiche a volte è un buon esercizio di modellazione di oggetti. Le matrici sono fondamentalmente classi che incapsulano array multidimensionali di numeri. Nella fase di unit test è utile istanziare staticamente matrici: come potrebbe essere utile inizializzarle in modo comprensibile alla lettura? Domanda che i più catalogheranno come banale e/o superflua e/o da perditempo :-p

La mia idea era arrivare a poter scrivere qualcosa come questa che segue:

Matrix matrix =
@"
    1,  2,  3
    2,  3,  4
    3,  4,  5
";

Per fare quanto sopra occorre giocare con il casting implicito della stringa. Ecco in che modo:

class Matrix
{

        //...

        public static Matrix Parse(string s)
        {
            Matrix matrix;
            string text;

            StringReader r = new StringReader(s);
            while ((text = r.ReadLine()) != null)
            {
              //Lettura stringa e trasformazione in Matrix.
              //L'implementazione del parsing dettagliato e la trasformazione effettiva 
              //è omesso perchè ininfluente ai fini dell'argomento del post.
            }
            return matrix;
        }
         
        public static implicit operator Matrix(string s)
        {
            return Parse(s);
        }
      
        //...
}

posted @ mercoledì 22 marzo 2006 12:51

Print
Comments have been closed on this topic.
«novembre»
domlunmarmergiovensab
31123456
78910111213
14151617181920
21222324252627
2829301234
567891011