我试图在fsharp中编写一个简单的函数来检查营业时间,但它不起作用。
这就是我所拥有的:
let businessdate dts =
let newdts = DateTime.FromOADate dts
match newdts with
| not DayOfWeek.Saturday & not DayOfWeek.Sunday & DateTime.Hour >= 8 & DateTime.Hour <= 20 -> 1
| _ -> 0
这失败了。 Fsharp中的DateTime是否可能没有成员小时?我怎么能这样做?
答案 0 :(得分:9)
您的代码段的问题在于您使用模式匹配有点奇怪。您不能在match
子句的模式中放置任意代码 - 您可以使用常量(如DayOfWeek.Saturday
)来检查值是否等于某个值,或者您可以使用{{1的变量赋值}}子句检查条件:
when
你可以通过使用活动模式使这一点变得更好,但这是一个更高级的功能,所以我建议你在熟悉基本模式之后再进行研究。
PS:在实践中,这可能不会起作用,因为像银行假期这样的事情,但我想这不是你问题的重点。