-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}}.