- 追加された行はこの色です。
- 削除された行はこの色です。
(* by poly. variant *)
type t = [ `Person of string | `Integer of int ]
let show = function
`Person p -> p
| `Integer i -> string_of_int i
let data = [ `Person "ogasawara";
`Integer 10 ]
let _ =
List.iter (fun t -> print_string (show t)) data
let show' = function
#t as t -> show t
| `Float f -> string_of_float f
let data = [ `Person "ogasawara";
`Integer 10;
`Float 22.0 ]
let _ =
List.iter (fun t -> print_string (show' t)) data
(* by object *)
class person name = object
val name : string = name
method show = name
end
class integer i = object
val value : int = i
method get = value
method show = string_of_int i
end
class type showable = object
method show : string
end
let showable c = (c :> showable)
let data = [ showable (new person "ogasawara");
showable (new integer 10) ]
let _ =
List.iter (fun o -> print_string o#show) data