【发布时间】:2020-10-16 22:08:37
【问题描述】:
我是 OCaml 的新手,我正在尝试创建一个使用堆栈的程序。所以这就是我所做的:
- 我有一个对象(后来定义为 ob_ctx),其中有几个字段定义如下:
type my_custom_type = {
nb_locals: int;
mutable label_br: stack_of_string;
}
- 我有类 stack_of_string:
class stack_of_string =
object (self)
val mutable the_list = ( [] : string list )
method push x =
the_list <- x :: the_list
method pop =
let result = List.hd the_list in
the_list <- List.tl the_list;
result
method peek =
List.hd the_list
method size =
List.length the_list
end;;
- 我尝试了终端中的类和方法,它们似乎工作正常,但是当我在文件中的函数中尝试时,它不起作用:
let my_fct ctx =
ctx.label_br#push ( function_that_returns_a_string() );
(*or ctx.label_br#push ( "a simple string" ); *)
(*or ctx.label_br#push "a simple string" ; *)
let some_other_var = "sth" in ....
它说
错误:此函数的类型为字符串 -> 单元 它适用于太多的论点;也许你忘记了一个';'。命令以代码 2 退出
我不明白为什么参数太多,推送需要 1 个参数,而我给出了 1 个参数。谁能给我解释一下
提前致谢
【问题讨论】:
标签: ocaml