develop7
5/10/2015 - 8:27 AM

my_class.erl

-module(my_class).
-export([new/1]).
-export([value/1]).
-export([version/1]).
-export([set_value/2]).

-record(self, {
          version :: pos_integer(),
          value :: string()
}).

new(Value) ->
    {?MODULE, #self{version = 1, value = Value}}.

version({?MODULE, #self{version = Version}}) ->
    Version.

value({?MODULE, #self{value = Value}}) ->
    Value.

set_value(Value, {?MODULE, #self{version = Version}})->
    {?MODULE, #self{version = Version + 1, value = Value}}.