的多个不同单位的转换我希望能够做到这一点: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,我回答这个问题,你为什么不使用它?这似乎是一个合法的解决方案。 –