运营商:: OCaml
Operator :: OCaml
我是 OCaml 的初学者,正在尝试构建一个解析器,我想要一个列表来存储我 class 中的所有方法。这是我的 .mly 文件中的一部分。
init_method_list:
{ [] }
| method_list method_decl { List.rev() }
;
method_list:
method_decl { [ ] }
| method_list method_decl { :: }
;
谁能准确解释一下这是怎么回事?特别是 :: 操作。一直在谷歌搜索,但在文档中找不到操作员。
我知道列表可以是空的,或者我们进行正确的递归调用以使用 class 中的所有方法填充它。 method_decl
仅查找表示方法的特定标记组合的匹配项。
正如我在评论中所说,运算符 ::
用于将类型 'a
的元素连接到类型 'a list
的列表。一个小例子:
1 :: [2;3]
生成列表 [1;2;3]
所以是的,它将元素添加到列表的前面。
正如其他人所说,:: 将一个元素连接到相同类型的列表中。另外,如果需要连接两个列表,可以使用@符号,例如:
[1;2;3]@[4] 将给出列表 [1;2;3;4]
我是 OCaml 的初学者,正在尝试构建一个解析器,我想要一个列表来存储我 class 中的所有方法。这是我的 .mly 文件中的一部分。
init_method_list:
{ [] }
| method_list method_decl { List.rev() }
;
method_list:
method_decl { [ ] }
| method_list method_decl { :: }
;
谁能准确解释一下这是怎么回事?特别是 :: 操作。一直在谷歌搜索,但在文档中找不到操作员。
我知道列表可以是空的,或者我们进行正确的递归调用以使用 class 中的所有方法填充它。 method_decl
仅查找表示方法的特定标记组合的匹配项。
正如我在评论中所说,运算符 ::
用于将类型 'a
的元素连接到类型 'a list
的列表。一个小例子:
1 :: [2;3]
生成列表 [1;2;3]
所以是的,它将元素添加到列表的前面。
正如其他人所说,:: 将一个元素连接到相同类型的列表中。另外,如果需要连接两个列表,可以使用@符号,例如:
[1;2;3]@[4] 将给出列表 [1;2;3;4]