• [^] # Re: Perf

    Posté par (site web personnel, Mastodon) . En réponse au journal la rouille et la comtesse. Évalué à 3.

    Je ne suis pas sûr de bien comprendre mais pour ton exemple de vitesse

    with Ada.Text_Io; use Ada.Text_Io;
    procedure Vitesse is
     type Distance is new Positive;
     type Speed is new Positive;
     function "*"(Left: Duration; Right: Distance) return Speed
     is
     begin
     return Speed(Left * Positive(Right));
     end "*";
     function "*"(Left: Distance; Right: Duration) return Speed is ("*"(Right, Left));
     My_Dist: Distance := 12;
     Time : Duration := 1.0;
    begin
     Put_Line("Speed = " & Speed'Image(My_Dist * Time));
    end Vitesse;

    Les types Speed et Distance dérivent du type Positive, la multiplication entre deux distances et entre deux vitesses est donc définies.
    Par contre, pour mélanger les types entre eux, je dois préciser de quoi il s'agit et comment doit être fait le calcul.
    Le type Duration est quant à lui un type flottant.