与 DateTime.TryParseExact 进行模式匹配防护?

2024-02-07

如何防范与DateTime.TryParseExact(如果可能的话,获取解析值)?下面的代码不起作用。

[<EntryPoint>]
let main args =
    let argList = args |> List.ofSeq
    match argList with
    | "aaa" :: [] -> aaa.main "aaa"
    | "bbb" :: [] -> bbb.main "bbb"
    | "ccc" :: yyyymm :: [] when DateTime.TryParseExact
              (yyyymm, "yyyyMM", CultureInfo.InvariantCulture, DateTimeStyles.None)-> 
        ccc.main "ccc" yyyymm

您可以使用mutable:

let mutable dt = Unchecked.defaultof<_>
match argList with
| "ccc" :: yyyymm :: [] when 
    DateTime.TryParseExact(yyyymm, 
                           "yyyyMM", 
                           CultureInfo.InvariantCulture, 
                           DateTimeStyles.None, 
                           &dt) -> ...

但活跃模式使匹配更加清晰:

let (|DateTimeExact|_|) (format: string) s =
    match DateTime.TryParseExact(s, format, CultureInfo.InvariantCulture, DateTimeStyles.None) with
    | true, d -> Some d
    | _ -> None

match argList with
| "ccc" :: DateTimeExact "yyyyMM" yyyymm :: [] -> ...
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

与 DateTime.TryParseExact 进行模式匹配防护? 的相关文章

  • 在 IEnumerable 上使用 Seq 函数 [重复]

    这个问题在这里已经有答案了 我正在尝试在 IEnumerable 上应用 Seq 函数 更具体地说 它是System Windows Forms HtmlElementCollection它实现了ICollection and IEnume
  • `ImmutableSortedSet` 和 fsharp `Set` 有什么区别?

    BCL引入了一组Immutable Collections http blogs msdn com b bclteam archive 2012 12 18 preview of immutable collections released
  • F# 中类型约束的顺序

    这适用于 F 4 0 type Something lt a b when b gt seq lt b gt gt 这不会 type Something lt b when b gt seq lt b gt a gt 类型名称中出现意外的符
  • 如何在 F# 中捕获任何异常(System.Exception)而不发出警告?

    我试图捕获异常 但编译器给出警告 此类型测试或向下转型将始终保持 let testFail try printfn Ready for failing failwith Fails with System ArgumentException
  • f# 运行总计序列

    好吧 这看起来应该很容易 但我就是不明白 如果我有一个数字序列 如何生成由运行总计组成的新序列 例如 对于序列 1 2 3 4 我想将其映射到 1 3 6 10 以适当的功能方式 Use List scan https msdn micro
  • 从 C# 调用高阶 F# 函数

    给定 F 高阶函数 在参数中采用函数 let ApplyOn2 f int gt int f 2 和 C 函数 public static int Increment int a return a 我怎么打电话ApplyOn2 with I
  • F# nameof 运算符不是一等函数

    我正在使用 F 4 7
  • F# 和模糊逻辑

    我知道这可能听起来很奇怪 但我想知道 Microsoft Visual F 正在进入的这个新世界中的一件事 这种语言有很多应用 我要学习 关于解析 函数式编程 结构化编程 但是人工智能呢 模糊逻辑有什么应用吗 F 是一种适合模糊逻辑应用程序
  • 单位安全平方根

    我只是想知道如何以与 F 正确交互的方式编写用户定义的平方根函数 sqrt 单位制 http blogs msdn com andrewkennedy archive 2008 09 04 units of measure in f par
  • 在 Deedle 系列中算得上独一无二

    我想对我的数据框中的系列有一个概述 例如 pandas 的唯一值计数 我不知道是否有内置函数可以实现这一点 到目前为止 我已经完成了一个函数来获取不同特征的数量 我可以设法完成这项工作 我的问题只是关于内置功能 let unique s D
  • F# 中的选项类型如何工作

    因此 我一直在阅读 Apress 的 Expert F 书籍 主要将其用作构建玩具式 F 库时的参考 但有一点我未能掌握 那就是 Option 类型 它是如何工作的以及它在现实世界中的用途是什么 选项类型至少为similar to Null
  • 基于函数签名的模式匹配

    在 F 中 您可以对函数签名进行模式匹配 我想用一个函数来装饰多个函数 该函数测量函数的执行情况并调用 statsd 我当前的功能是 let WrapFunctionWithPrefix metrics Metric Client IRec
  • 如何在 F# 中进行卷积?

    我想convolve http en wikipedia org wiki Convolution具有离散滤波器的离散信号 信号和滤波器是 F 中的浮点数序列 我能弄清楚如何做到这一点的唯一方法是使用两个嵌套的 for 循环和一个可变数组来
  • Async.AwaitTask 在 f# 中如何工作?

    我知道 f 和 c 异步模型之间的主要区别在于 在 f 中 除非您调用 Async RunSynchronously 之类的内容 否则异步执行不会开始 在 C 中 当方法返回任务时 通常 并非总是 立即在后台线程中开始执行 Async Aw
  • 将可区分的联合传递给 InlineData 属性

    我正在尝试对一个解析器进行单元测试 该解析器解析字符串并返回相应的抽象语法树 表示为可区分的联合 我认为使用 Xunit Extensions 属性会非常紧凑InlineData将所有测试用例堆叠在一起
  • 生成尾调用操作码

    出于好奇 我尝试使用 C 生成尾部调用操作码 斐波那契数很简单 所以我的 C 示例如下所示 private static void Main string args Console WriteLine Fib int MaxValue 0
  • 具有异步操作的面向铁路的编程

    以前问过类似的问题 但不知何故我没有找到出路 再次尝试另一个例子 作为起点的代码 稍作修改 可在https ideone com zkQcIU https ideone com zkQcIU 它有一些识别问题Microsoft FSharp
  • 如何在 F# 中定义这种惰性(无限?)数据结构

    我在定义以下简单文本光标时遇到问题 该光标由元组表示 其中第一个元素是当前字符 如果函数获取下一个元素或崩溃 则第二个元素是 let rec nextAt index text if index lt String length text
  • 如果目标是 x64,为什么 Seq.iter 比 for 循环快 2 倍?

    免责声明 这是微基准测试 如果您对此主题感到不满意 请不要评论诸如 过早优化是邪恶的 之类的言论 示例是针对 x64 Net4 5 Visual Studio 2012 F 3 0 的发行版 并在 Windows 7 x64 中运行 经过分
  • 为什么我必须将 Async 包装到另一个异步工作流程中并让!它?

    我试图了解 F 中的异步工作流程 但我发现有一部分我真的不明白 下面的代码工作正常 let asynWorkflow async let result Stream TryOpenAsync partition gt Async Await

随机推荐