我有->输入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实际上并不是该语言的一部分。

10-07 16:45