Erlang - Hồ sơ
Erlang có thêm cơ sở để tạo hồ sơ. Các bản ghi này bao gồm các trường. Ví dụ: bạn có thể xác định một bản ghi cá nhân có 2 trường, một là id và một là trường tên. Trong Erlang, sau đó bạn có thể tạo các phiên bản khác nhau của bản ghi này để xác định nhiều người với nhiều tên và id khác nhau.
Hãy khám phá cách chúng ta có thể làm việc với các bản ghi.
Tạo bản ghi
Bản ghi được tạo bằng Mã định danh Bản ghi. Trong mã định danh bản ghi này, bạn chỉ định các trường khác nhau tạo thành bản ghi. Cú pháp chung và ví dụ được đưa ra dưới đây.
Cú pháp
record(recordname , {Field1,Field2 ..Fieldn})
Thông số
recordname - Đây là tên được đặt cho bản ghi.
Field1,Field2 ..Fieldn - Đây là danh sách các trường khác nhau tạo thành bản ghi.
Giá trị trả lại
không ai
Ví dụ
-module(helloworld).
-export([start/0]).
-record(person, {name = "", id}).
start() ->
P = #person{name="John",id = 1}.
Ví dụ trên cho thấy định nghĩa của một bản ghi có 2 trường, một là id và một là tên. Ngoài ra, một bản ghi được xây dựng theo cách sau:
Cú pháp
#recordname {fieldName1 = value1, fieldName2 = value2 .. fieldNameN = valueN}
Nơi bạn chỉ định giá trị cho các trường tương ứng khi một thể hiện của bản ghi được xác định.
Truy cập một giá trị của bản ghi
Để truy cập các trường và giá trị của một bản ghi cụ thể, nên sử dụng cú pháp sau.
Cú pháp
#recordname.Fieldname
Thông số
recordname - Đây là tên được đặt cho bản ghi.
Fieldname - Đây là tên của trường cần được truy cập.
Giá trị trả lại
Giá trị được gán cho trường.
Ví dụ
-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]).
Đầu ra
Kết quả của chương trình trên như sau.
1
“John”
Cập nhật giá trị của bản ghi
Việc cập nhật giá trị bản ghi được thực hiện bằng cách thay đổi giá trị thành một trường cụ thể và sau đó gán bản ghi cho một tên biến mới. Cú pháp chung và ví dụ được đưa ra bên dưới.
Cú pháp
#recordname.Fieldname = newvalue
Thông số
recordname - Đây là tên được đặt cho bản ghi.
Fieldname - Đây là tên của trường cần được truy cập.
newvalue - Đây là giá trị mới cần được gán cho trường.
Giá trị trả lại
Bản ghi mới với các giá trị mới được gán cho các trường.
Ví dụ
-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]).
Đầu ra
Kết quả của chương trình trên như sau:
1
“Dan”
Bản ghi lồng nhau
Erlang cũng có cơ sở để có các bản ghi lồng nhau. Ví dụ sau đây cho thấy cách tạo các bản ghi lồng nhau này.
Ví dụ
-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]).
Trong ví dụ trên, cần lưu ý những điều sau:
Đầu tiên chúng tôi tạo bản ghi của một người có các giá trị trường là tên và địa chỉ.
Sau đó, chúng tôi xác định một bản ghi nhân viên có người là một trường và một trường bổ sung được gọi là id.
Đầu ra
Kết quả của chương trình trên như sau.
1