クラスを使ってみる

OCaml でクラスを作ってみた。Ruby の attr_accessor のようなものはないのかな。

class counter =
  object
    val mutable value = 0

    method get = value
    method set v = value <- v
    method increment = value <- (value + 1)
    method decrement = value <- (value - 1)
  end;;

let cnt = new counter;;

Printf.printf "val: %d\n" cnt#get;;  (* val: 0 *)

cnt#set 10;;

Printf.printf "val: %d\n" cnt#get;;  (* val: 10 *)

cnt#increment;;
cnt#increment;;
cnt#increment;;

Printf.printf "val: %d\n" cnt#get;;  (* val: 13 *)

cnt#decrement;;
cnt#decrement;;
cnt#decrement;;
cnt#decrement;;
cnt#decrement;;

Printf.printf "val: %d\n" cnt#get;;  (* val: 8 *)