竖条是什么|&引用;(又名管道)在OCaml中完成?

竖条是什么|&引用;(又名管道)在OCaml中完成?,ocaml,Ocaml,在以下函数中,它反转数组/列表: let rec rev l = match l with [] -> [] | h::t -> rev t @ [h];; 人们会注意到,在下一行之前有一个管道|: h::t -> rev t @ [h];; 我想知道是否有人愿意解释一下这个垂直条在OCaml中的用途,也许还有其他用途?多谢各位 它分隔模式匹配的大小写。在您的示例中,它用作多重选择语句的模式分隔符,类似于类C语言中的switch语句的大小写 let is_v

在以下函数中,它反转数组/列表:

let rec rev l =
  match l with
    [] -> []
  | h::t -> rev t @ [h];;
人们会注意到,在下一行之前有一个管道
|

h::t -> rev t @ [h];;

我想知道是否有人愿意解释一下这个垂直条在OCaml中的用途,也许还有其他用途?多谢各位

它分隔模式匹配的大小写。

在您的示例中,它用作多重选择语句的模式分隔符,类似于类C语言中的
switch
语句的
大小写

let is_vowel c = match c with 
  'a' | 'e' | 'i' | 'o' | 'u' -> true 
| _ -> false ;; 

function is_vowel(c){
  switch(c){
    case 'a':
    case 'e':
    case 'i':
    case 'o':
    case 'u':
      return true;
    default: 
      return false;
  }
}
这两段代码将生成相同的输出,但是这是相似性的终点。我发现文档非常有用,它更详细地介绍了match还能做什么,不能做什么

管道操作符的其他用途包括:

  • 枚举类型声明
    • type typ=N1 | N2 | N3
  • 联合类型声明
    • 类型typ=N1类型1 | N2类型2

只是确认一下,
match
在本例中本质上也是其他语言的转换?我更新了答案以澄清,本质上是的。