我有->输入week = MON |周二| WED ......我想创建明天返回第二天的函数!例如,如果我调用“明天星期一”,该函数将返回TUE。
最佳答案
没有内置的语言构造可让您执行此操作。因此,您应该自己编写函数:
let tomorrow = function
| MON -> TUE
| TUE -> WED
...
另一种可能性是实现以下功能:
val int_of_week: week -> int
val week_of_int: int -> week
碰巧用Obj.magic编写这些函数很简单。他们将使您明天实现为:
let tomorrow w =
week_of_int ((int_of_week w + 1) mod 7)
这可能更接近您的想法。
但是此解决方案不太安全:
明天的函数假设int_of_week MON = 0,int_of_week TUE = 1,依此类推;
您需要记录不为0到6之间的整数的week_of_int的行为;
最后但并非最不重要的一点是,Obj.magic实际上并不是该语言的一部分。