F# 측정 단위 - '리프팅'값을 플로팅 <
-
03-07-2019 - |
문제
CSV 파일에서 숫자를 가져올 때는 단위로 플로트로 변환해야합니다.
현재 인라인 기능 으로이 작업을 수행합니다.
data |> List.map float |> List.map (fun n -> n * 1.0<m>)
그러나이 작업을 수행하는 더 우아한 방법이 있는지 궁금합니다. 아니면 변환 기능을 갖춘 내 자신의 '단위'모듈을 만들어야합니까?
정말로 좋은 것은 이와 같은 것이지만 가능하다고 의심합니다 ...
data |> List.map float |> List.map lift<m>
이것은 나의 이전 질문과 반대입니다 (F# 단위를 일반적으로 제거하는 방법).
업데이트 : 수제 유닛의 경우, 나는 이것을 시도했는데, 그것은 괜찮습니다.
[<Measure>]
type km =
static member lift (v:float) = v * 1.0<km>
data |> List.map float |> List.map km.lift
또는 질문에 따라 이 답변
data |> List.map (float >> km.lift)
해결책
측정 단위는 현재 유형 매개 변수가 될 수없는 것처럼 보입니다 (이것이 변경 될지 알 수 없습니다). 그래서 이것을 쓰는 가장 짧은 방법은 다음과 같습니다.
data |> List.map float |> List.map ((*) 1.0<m>)
편집하다
지금 참조하십시오 FloatWithMeasure
여기
http://msdn.microsoft.com/en-us/library/ee806527(vs.100).aspx
다른 팁
두 번 맵핑 해야하는 이유가 있습니까? 이것에 무슨 문제가 있습니까?
data |> List.map (fun x -> (float x) * 1.0<m>)
제휴하지 않습니다 StackOverflow