下面的代码片段来自这里,从上下文中我了解它通过模式匹配做了什么,但是它是如何做的以及那个操作符让我进行循环.MSDN没有帮助.如果那是一个运营商,它有名字吗?对不起,如果我有一些遗漏的谷歌fu.
let (>=>) f1 f2 arg =
match f1 arg with
| Ok data -> f2 data
| Error e -> Error e
Run Code Online (Sandbox Code Playgroud)
更新: 确实可能是运算符过载的情况,并且由于与其他SO问题的链接,我想我的问题的核心是重载运算符的语义是什么.查看其他链接(>> =)似乎是典型的绑定运算符.
因此,虽然我认识到日期格式化等应该在表示层中完成,但我很想知道是否有人已经看到或认识到这种差异(请在家尝试,如果这样倾向)我有点困惑,多数好奇,首先是示例代码.
更新:为了澄清基于初始响应,我知道日期无效或更好"不安全",因为我更普遍关注的特定字段来自用户输入."也就是说,虽然我知道验证/格式化不是SQL 2008强大的套装,至少我很好奇DATETIME更宽容,我想知道如何宽容."
DECLARE @RawValue NVARCHAR(30), @Value DATETIME;
SET @RawValue = '01/20.1901'
SET @Value = CAST(@RawValue AS DATETIME)
PRINT @Value
Run Code Online (Sandbox Code Playgroud)
这会为我的服务器设置生成正确的结果:Jan 20 1901 12:00 AM
但是,如果倒数第二行更改为(用DATE替换DATETIME):
SET @Value = CAST(@RawValue AS DATE)
Run Code Online (Sandbox Code Playgroud)
消息241,级别16,状态1,行8转换在从字符串转换日期和/或时间时失败.
那里有解释吗?要明确的是,如果我将@Value作为DATE或DATETIME或甚至是NVARCHAR,那么无关紧要 - 相同的结果.错误消息似乎表明它在转换日期和/或时间时遇到问题,为什么DATETIME的行为会有所不同?
谢谢,