如何解决在Ocaml中的嵌套对象中调用方法的语法
我是OCaml的新手,我试图创建一个使用堆栈的程序。所以这就是我所做的:
type my_custom_type = {
nb_locals: int;
mutable label_br: stack_of_string;
}
- 我有class 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 ....
它说
我不明白参数太多了,推入需要1个参数,而我给出了1个参数。有人可以给我解释一下
预先感谢
解决方法
您没有提供my_fct
的完整(或自包含)定义。我使用以下定义:
let my_fct ctx =
ctx.label_br#push ( String.make 3 'x' );
let some_other_var = "sth" in some_other_var
有了这个定义(以及上面的其他定义),您的代码对我来说很好编译。
一个可能的原因是,您在OCaml会话中有剩余的定义,这些定义令人困惑。您可以尝试从头开始。我希望您会看到与我一样的东西,即代码可以编译。
如果没有,您应该给出一个完整的(独立的)示例,该示例引发您所看到的错误。否则很难提供帮助。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。