在OCaml中使用课程

时间:2015-03-12 07:48:29

标签: ocaml

我希望在类test_type中使用我的类型t创建函数。我的代码:

type test_type = [`t1|`t2]

let get_types =
  function
   | `t1 -> "t1"
   | `t2 -> "t2";;

class type class_types =
  object
    method t_types : test_type
    method test : (string -> string -> test_type -> unit) -> unit
end;;

class t : class_types =
  object
    method test par1 ?(par2="no par2") ?(par3=`t1) () =
      print_endline("--->"^par1);
      print_endline("--->"^par2);
      print_endline("--->"^get_types par3)
end;;

let t_run = new t;;
t_run # test "parametr1" ~par3:`t2 ();;

是返回错误

The class type is not matched by the class type class_types
The first class type has no method t_types

怎么做?

1 个答案:

答案 0 :(得分:3)

只是您对t的实施缺少方法t_types,该方法在类类型class_types中定义。

除此之外,方法test的类型为string -> ?par2: string -> ?par3: test_type -> unit -> unit,与类类型的方法不兼容。