这不是很难,但是因为我正在学习语言,我希望我的代码更优雅,我不喜欢这样:
match aver with
| 1 -> @" GROUP BY
DATEPART(YEAR, DT.[Date]),
DATEPART(MONTH, DT.[Date]),
DATEPART(DAY, DT.[Date]),
DATEPART(HOUR, DT.[Date]),
(DATEPART(MINUTE, DT.[Date]) / 10)"
| 2 -> @" GROUP BY
DATEPART(YEAR, DT.[Date]),
DATEPART(MONTH, DT.[Date]),
DATEPART(DAY, DT.[Date]),
DATEPART(HOUR, DT.[Date])"
| 3 -> @" GROUP BY
DATEPART(YEAR, DT.[Date]),
DATEPART(MONTH, DT.[Date]),
DATEPART(DAY, DT.[Date])"
| 4 -> @" GROUP BY
DATEPART(YEAR, DT.[Date]),
DATEPART(MONTH, DT.[Date])"
| _ -> @" GROUP BY
DATEPART(YEAR, DT.[Date]),
DATEPART(MONTH, DT.[Date]),
DATEPART(DAY, DT.[Date]),
DATEPART(HOUR, DT.[Date]),
DATEPART(MINUTE, DT.[Date])"
因为我真的想要它:
match aver with
| 4 -> @" GROUP BY
DATEPART(YEAR, DT.[Date]),
DATEPART(MONTH, DT.[Date])"
| 3 -> 2 + @",DATEPART(DAY, DT.[Date])"
| 2 -> 3 + @",DATEPART(HOUR, DT.[Date])"
| 1 -> 3 + @", (DATEPART(MINUTE, DT.[Date]) / 10)"
| _ -> 3 + @", DATEPART(MINUTE, DT.[Date])"
是否有某种方法可以在某些匹配中使用其他匹配?
答案 0 :(得分:2)
let rec myFuncName = function
| 4 -> @" GROUP BY
DATEPART(YEAR, DT.[Date]),
DATEPART(MONTH, DT.[Date])"
| 3 -> myFuncName 4 + ",DATEPART(DAY, DT.[Date])"
| 2 -> myFuncName 3 + ",DATEPART(HOUR, DT.[Date])"
| 1 -> myFuncName 2 + ",(DATEPART(MINUTE, DT.[Date]) / 10)"
| _ -> myFuncName 2 + ",DATEPART(MINUTE, DT.[Date])"
不是最有效的,但它应该展示你正在寻找的东西。