Function 什么';这是';()';用OCaml?
在中,我发现以下代码:Function 什么';这是';()';用OCaml?,function,ocaml,Function,Ocaml,在中,我发现以下代码: let command = Command.basic ~summary:"Generate an MD5 hash of the input data" Command.Spec.( empty ... +> anon (maybe_with_default "-" ("filename" %: file)) ) (fun use_string trial filename () ->
let command =
Command.basic
~summary:"Generate an MD5 hash of the input data"
Command.Spec.(
empty
...
+> anon (maybe_with_default "-" ("filename" %: file))
)
(fun use_string trial filename () ->
我在最后一行看到了()
(fun-use\u-string-trial-filename()
)
同样从中,我在第一场比赛中也看到了()
let rec print_list = function
[] -> ()
| e::l -> print_int e ; print_string " " ; print_list l
那么,在这两种情况下,
()
的含义是什么?lambda表达式(fun
)的参数列表中如何包含()
它是一个空构造函数,是的唯一构造函数。约定是使用此构造函数指示“无特定值”,这在处理有效代码时很常见
返回()
是不返回任何内容的ML方法
当出现在参数列表中时,它是匹配的,就像任何其他构造函数一样。这是一种表示参数没有值的方法。在ML中这样做是必要的,因为所有函数都是一元函数。函数不能为零参数,因此只能传递一个不包含任何信息的参数,即
()
它是空构造函数,是函数的唯一构造函数。约定是使用此构造函数指示“无特定值”,这在处理有效代码时很常见
返回()
是不返回任何内容的ML方法
当出现在参数列表中时,它是匹配的,就像任何其他构造函数一样。这是一种表示参数没有值的方法。在ML中这样做是必要的,因为所有函数都是一元函数。函数不能为零参数,因此只能传递一个不包含任何信息的参数,即
()
最接近的类比是C中的void
类型。但有一个微妙但重要的类型理论差异。相关:最接近的类比是C中的void
类型。但有一个微妙但重要的类型理论差异。相关:不仅所有ML函数都只取一个参数,但它们也只返回一个结果。因此,()
也是函数在没有任何想要返回的值时返回的内容。这两种类型都是典型的有效代码:如果f
是纯的并且不带参数,那么没有理由不将其设置为常量,如果它没有返回的结果,这意味着它的效果很有趣。单元类型在多态数据结构中也很有用,例如用作一组键的哈希表((字符串,单位)Hashtbl.t
)。不仅所有的ML函数只接受一个参数,而且它们也只返回一个结果。因此()
也是函数在没有任何要返回的值时返回的值。这两种类型都是典型的有效代码:如果f
是纯的且不带参数,则没有理由不将其设为常量,如果它没有要返回的结果,这意味着它的效果很有趣。单位类型在p中也很有用多形数据结构,例如仅用作一组键的哈希表((字符串,单位)Hashtbl.t
)。