2010-11-20 3 views
2

RateOfChange이라는 메서드가 있습니다.이 메서드는 1 초 간격으로 읽은 두 값을 사용하여 결과를 반환합니다. 이 개 위치에 대한측정 단위 - 다른 단위가 전달 된 재사용 방법

, 그것은 등 두 번째는 줄 (Joule)을 반환이 개 에너지 값 /를 들어,이 가속도를 반환,이 개 속도에 대한 속도를 반환

이 물리적으로 가능하지만, 측정의 단위는하지 않습니다

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>) 

방법은 물론 속도에 대한 올바른 float<SI.m> -> float<SI.m>/float<SI.s>, 구속되도록 velocity = 라인,하지만 라인 acceleration =을 ... : 처음 사용할 방법이 지정 유형 contrained있다 - 나를 그렇게을 전달할 때 컴파일에 실패합니다.3210은이 방법이 기대하지 않는 것입니다.

나는 RateOfChangeWithTime이 전달 된 유형을 불변으로하고 싶지만 초 단위로 나누어 진 측정 단위를 반환하고 싶습니다.

이것은 실제 라이브 상황과 더 일치하는 것처럼 보일 수 있습니다. (더 복잡한 시나리오를 위해이 작업을 수행하려고합니다. 여기를 참조하십시오.

답변

6
let RateOfChangeWithTime (value1: float<_>, value2: float<_>) = (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>) 
+0

멋진 답변을 주셔서 대단히 감사합니다. ;-) –

관련 문제