竖条是什么|&引用;(又名管道)在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
在本例中本质上也是其他语言的转换?我更新了答案以澄清,本质上是的。