Let’s explore how we can work with records.
Creating a Record
A record is created using the Record Identifier. In this record identifier, you specify the various fields which constitute the record. The general syntax and example are given below.Syntax
record(recordname , {Field1,Field2 ..Fieldn})
Parameters
- recordname − This is the name given to the record.
- Field1,Field2 ..Fieldn − These are the list of various fields which constitute the record.
Return Value
NoneFor example
-module(helloworld). -export([start/0]). -record(person, {name = "", id}). start() -> P = #person{name="John",id=1}.The above example shows the definition of a record with 2 fields, one is the id and the other is the name. Also, a record is constructed in the following way −
Syntax
#recordname {fieldName1 = value1, fieldName2 = value2 .. fieldNameN = valueN}
Where in you assign values to the respective fields when an instance of the record is defined.Accessing a Value of the Record
To access the fields and values of a particular record, the following syntax should be used.Syntax
#recordname.Fieldname
Parameters
- recordname − This is the name given to the record.
- Fieldname − This is the name of the field which needs to be accessed.
Return Value
The value assigned to the field.For example
-module(helloworld). -export([start/0]). -record(person, {name = "", id}). start() -> P = #person{name = "John",id = 1}, io:fwrite("~p~n",[P#person.id]), io:fwrite("~p~n",[P#person.name]).
Output
The output of the above program is as follows.1 “John”
Updating a Value of the Record
The updation of a record value is done by changing the value to a particular field and then assigning the record to a new variable name. The general syntax and example is given below.Syntax
#recordname.Fieldname = newvalue
Parameters
- recordname − This is the name given to the record.
- Fieldname − This is the name of the field which needs to be accessed.
- newvalue − This is the new value which needs to be assigned to the field
Return Value
The new record with the new values assigned to the fields.For example
-module(helloworld). -export([start/0]). -record(person, {name = "", id}). start() -> P = #person{name = "John",id = 1}, P1 = P#person{name = "Dan"}, io:fwrite("~p~n",[P1#person.id]), io:fwrite("~p~n",[P1#person.name]).
Output
The output of the above program is as follows −1 “Dan”
Nested Records
Erlang also has the facility to have nested records. The following example shows how these nested records can be created.For example
-module(helloworld). -export([start/0]). -record(person, {name = "", address}). -record(employee, {person, id}). start() -> P =#employee{person=#person{name="John",address="A"},id=1}, io:fwrite("~p~n",[P#employee.id]).In the above example the following things need to be noted −
- We are first creating a person’s record which has the field values of name and address.
- We then define an employee record which has the person as a field and an additional field called id.
Output
The output of the above program is as follows.1
No comments:
Post a Comment