2016-12-17 4 views
1

Давайте такой кодOCaml определение и реализация интерфейса

module type INTERFACE = 
sig 
    val function_that_must_be_implemented : int -> int 
end 

module Implementation : INTERFACE = 
struct 
    let function_that_must_be_implemented x = x 
end 

Есть ли способ, чтобы описать то же самое, но с использованием классов OCaml? Я хочу иметь класс, который реализует такой интерфейс.

+0

В F #, это обычная вещь (ключевое слово '' with''). Не совсем программист OCAML, но, может быть, вам повезет, а решение F # такое же или похожее на решение OCAML ?! – BitTickler

+0

Или прочитайте https://realworldocaml.org/v1/en/html/classes.html, чтобы увидеть способ OCAML делать вещи ... – BitTickler

ответ

1

Существует нечто, называемое типом класса:

class type interface = object method method_I_want : int end 

Тогда вы можете реализовать его:

class implementation : interface = object 
    method method_I_want = 14 
end 

Вы действительно можете создать экземпляр этого класса:

# let abc = new implementation;; 
val abc : implementation = <obj> 
# abc#method_I_want;; 
- : int = 14 
Смежные вопросы