gpt4 book ai didi

types - 当 OCaml 变量以 `#` 开头时,这意味着什么? (哈希符号/磅符号)?

转载 作者:行者123 更新时间:2023-12-04 16:42:24 27 4
gpt4 key购买 nike

我在模式匹配中遇到了这个
| {call_name = #bundle_source; _ }
source

在代码的前面,bundle_source被定义为一种类型( type bundle_source = ... )。

那么哈希符号是什么意思呢?是否{call_name = #bundle_source }在模式匹配中意味着 call_name 的值预计类型为 bundle_source ?

我搜索了 the manual对于“哈希符号”和“磅符号”,但一无所获。

最佳答案

这是构建匹配多态变量值集合的模式的简写。

文档位于 Section 6.6 OCaml 手册的:

If the type [('a,'b,…)] typeconstr = [ ` tag-name1 typexpr1 | … | ` tag-namen typexprn] is defined, then the pattern #typeconstr is a shorthand for the following or-pattern: ( `tag-name1(_ : typexpr1) | … | ` tag-namen(_ : typexprn)). It matches all values of type [< typeconstr ].


# type b = [`A | `B];;
type b = [ `A | `B ]
# let f x =
match x with
| #b -> "yes"
| _ -> "no";;
val f : [> b ] -> string = <fun>
# f `A;;
- : string = "yes"
# f `Z;;
- : string = "no"

(我也不熟悉这个符号。)

关于types - 当 OCaml 变量以 `#` 开头时,这意味着什么? (哈希符号/磅符号)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43989931/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com