的多個不同單位的轉換我希望能夠做到這一點:F#的運算符重載的措施
let duration = 1<hours> + 2<minutes> + 3<seconds>
有以下類型和功能(和措施的可能更多的單位):
type [<Measure>] seconds
type [<Measure>] minutes
type [<Measure>] hours
let seconds_per_minute = 60<seconds>/1<minutes>
let minutes_per_hour = 60<minutes>/1<hours>
let minutes_to_seconds minutes seconds = minutes * seconds_per_minute + seconds
let hours_to_minutes hours minutes = hours * minutes_per_hour + minutes
所以基本上「hours_to_minutes」應該用於添加小時和分鐘,並且「minutes_to_seconds」應該用於在上面輸入時添加分鐘和秒。
這是可能在F#中做的嗎?
哇,這太棒了!我有幾個問題,但: 1.爲什麼你不推薦它? 2.我的類型安全性是否鬆動? 3.如果您不得不選擇,那麼您寧願使用Phil Trelfort的運行時解決方案嗎? 4.美元實際上做了什麼? 謝謝! – user3323923
順便說一句,我希望我能接受兩個答案。 – user3323923
@ user3323923,Gustavo使用括號'($)'定義了一個運算符'$'。 @Gustavo,我回答這個問題,你爲什麼不使用它?這似乎是一個合法的解決方案。 –