J'ai une méthode, appelée RateOfChange
, qui prend deux valeurs séparées d'une seconde et renvoie le résultat.Unités de mesure - méthode de réutilisation avec différentes unités passées en
Pour deux positions, il retourne la vitesse, pour deux vitesses, elle renvoie l'accélération, pour deux valeurs d'énergie, il retourne joules/seconde, etc.
Ceci est physiquement possible, mais les unités de mesure ne laissez pas me faire - la première utilisation de la méthode est contrained à préciser le type:
let RateOfChangeWithTime (value1, value2) = (value2 - value1)/1.0<SI.s>
let velocity = RateOfChangeWithTime(2.0<SI.m>, 1.0<SI.m>)
let acceleration = RateOfChangeWithTime(3.0<SI.m/SI.s>, 2.0<SI.m/SI.s>)
la ligne velocity =
provoque la méthode à être contraint à float<SI.m> -> float<SI.m>/float<SI.s>
, ce qui bien sûr est correct pour la vitesse, mais la ligne acceleration =
... puis ne parvient pas à compiler car il passe dans un float<SI.m/SI.s>
que la méthode ne prévoit pas.
Je voudrais que RateOfChangeWithTime
soit invariant par rapport au type transmis, mais retourne simplement une unité de mesure qui a été divisée par secondes.
Cela semble correspondre davantage à des situations réelles, est-ce possible? (Je suis en train de le faire pour un scénario plus complexe - voir ici (http://taumuon-jabuka.blogspot.com/2010/11/f-units-of-measure-with-reactive.html)
Superbe, merci beaucoup pour la réponse ;-) –