2015-03-12 2 views
0

Я хочу создать функцию с моим типом test_type в классе t. Мой код:Работа с классом в OCaml

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 

Как это сделать?

ответ

3

Просто ваша реализация t не имеет метода t_types, который определен в классе типа class_types.

В дополнение к этому метод test имеет тип string -> ?par2: string -> ?par3: test_type -> unit -> unit, что несовместимо с одним в классе.

+0

Большое спасибо, вы мне очень помогли. –

Смежные вопросы