How to create an internal value in a module using OCaml / Reason

I have the following module:

type userBuilderType = {
  mutable name: string,
};

module BuilderPattern = {
  let builder () => {
    name: "",
  };
  let setName = fun name => builder.name = name;
  let getName = builder.name;
};

BuilderPattern.setName("Charles");
Js.log(BuilderPattern.getName);

Performs the following:

  • Creates a type for setter
  • object builderName to configure + receive In addition, I would like to:
  • Be able to get the name using JS.log in the getName function

However, in this case, I return the following error:

This is: unit => userBuilderType But somewhere wanted: userBuilderType 

Any suggestions as to how I setter / getter correctly configured are more than appreciated. Thank.

+4
source share
1 answer

There are many code issues in your question, some of which are purely syntactic. The github code makes a little more sense, but the main problem you are facing is that you are not making an instance of your data anywhere.

, , , getter setter:

type userBuilderType = {
  mutable name: string,
  mutable age: int,
  mutable phone: string,
  mutable address: string
};

module BuilderPattern = {
  let builder () => {
    name: "",
    age: 0,
    phone: "",
    address: ""
  };
  let setName builder name => builder.name = name;
  let getName builder => builder.name;
};

let myBuilder = BuilderPattern.builder ();

BuilderPattern.setName myBuilder "Charles";
Js.log(BuilderPattern.getName myBuilder);

, ( ):

type userBuilderType = {
  mutable name: string,
  mutable age: int,
  mutable phone: string,
  mutable address: string
};

module BuilderPattern = {
  let builder = {
    name: "",
    age: 0,
    phone: "",
    address: ""
  };
  let setName name => builder.name = name;
  let getName () => builder.name;
};

BuilderPattern.setName "Charles";
Js.log(BuilderPattern.getName ());

, let, .

+2

Source: https://habr.com/ru/post/1688090/


All Articles