当我遇到这行代码时,我正在浏览FSharp.Data的源代码
let (|Singleton|) = function [l] -> l | _ -> failwith "Parameter mismatch"
Run Code Online (Sandbox Code Playgroud)
这function [l]是我不明白的.更具体地说,我不明白[l]参数是如何工作的.
通过在FSI中进行实验,我可以确定它开始一种类似于的模式匹配形式match [l] with ....但是,我无法弄清楚F#编译器如何解释表达式.
我想知道的是它实际上是如何工作的以及它遵循的规则.
它相当于
let (|Singleton|) lst =
match lst with
| [l] -> l
| _ -> failwith "Parameter mismatch"
Run Code Online (Sandbox Code Playgroud)
所以它从单个元素列表中提取元素,或者如果列表具有任何其他数量的元素则抛出异常.
| 归档时间: |
|
| 查看次数: |
115 次 |
| 最近记录: |