[nem-pl] Varianty, a ToString

Michal Moskal malekith at pld-linux.org
Sun May 9 14:28:17 CEST 2004


On Sun, May 09, 2004 at 01:32:58PM +0200, rzyjontko wrote:
> Najpierw krótko o tym, co w tej chwili próbuję osiągnąć.  Na zajęciach
> poznałem takie narzędzie JUnit (http://junit.org), które służy do
> automatyzacji testów.  Istnieje również takie narzędzie dla .NETu
> (http://nunit.org), ale jest rozprowadzane w postaci MSI, poza tym
> działa chyba tylko z C#.
> 
> No więc postanowiłem sobie coś takiego napisać, żeby można było
> automatycznie testować pewne fragmenty kodu.  Niestety napotkałem
> wiele problemów...
> 
> Jak wiadomo każda klasa w .NET dziedziczy po klasie System.Object i w
> związku z tym ma takie fajne metody jak Equals i ToString.  Chciałoby
> się, żeby w Variantach też można było takie metody przeciążyć.
> Dlaczego?  Bo wyświetlenie listy byłoby dużo prostsze, sprawdzenie,
> czy dwie listy zawierają te same elementy również.

Możesz zrobić te metody w jakieś klasie a potem odziedziczyć po niej
wariant. Ale to tylko brzydki workaround. Spróbuje to może dziś zrobić
(skoro jeszcze nie wiadomo co z indekserami).

> Oczywiście można sobie varianta opakować w klasę i dodać te metody,
> ale to nie jest rozwiązanie, bo traci się możliwość matchingu po tej
> klasie.


Chodzi mi raczej o coś takiego:

  public class Type_base
  {
    public as_string () : string
      { Tyutil.string_of_type ((this :> Type)) }
    public this () {}
  }
                                                                                                               
  public variant Type : Type_base
  {
    | T_app {
    ...
  }

Tylko tu jest taki brzydki cast i konieczność dopisania tej dodatkowej
klasy...

-- 
: Michal Moskal :: http://www.kernel.pl/~malekith :: GCS !tv h e>+++ b++
: When in doubt, use brute force. -- Ken Thompson :: UL++++$ C++ E--- a?




More information about the devel-pl mailing list