Erlang - บันทึก
Erlang มีสิ่งอำนวยความสะดวกพิเศษในการสร้างบันทึก ระเบียนเหล่านี้ประกอบด้วยเขตข้อมูล ตัวอย่างเช่นคุณสามารถกำหนดระเบียนส่วนบุคคลซึ่งมี 2 ฟิลด์หนึ่งคือ id และอีกฟิลด์คือฟิลด์ชื่อ ใน Erlang คุณสามารถสร้างอินสแตนซ์ต่างๆของเรกคอร์ดนี้เพื่อกำหนดบุคคลหลายคนด้วยชื่อและรหัสต่างๆ
มาดูกันว่าเราจะทำงานกับบันทึกได้อย่างไร
การสร้างบันทึก
เร็กคอร์ดถูกสร้างขึ้นโดยใช้ตัวระบุเรกคอร์ด ในตัวระบุเรกคอร์ดนี้คุณระบุฟิลด์ต่างๆที่ประกอบเป็นเรกคอร์ด ไวยากรณ์และตัวอย่างทั่วไปได้รับด้านล่าง
ไวยากรณ์
record(recordname , {Field1,Field2 ..Fieldn})
พารามิเตอร์
recordname - นี่คือชื่อที่กำหนดให้กับบันทึก
Field1,Field2 ..Fieldn - นี่คือรายการของช่องต่างๆที่ประกอบขึ้นเป็นบันทึก
ส่งคืนค่า
ไม่มี
ตัวอย่างเช่น
-module(helloworld).
-export([start/0]).
-record(person, {name = "", id}).
start() ->
P = #person{name="John",id = 1}.
ตัวอย่างข้างต้นแสดงคำจำกัดความของระเบียนที่มี 2 ฟิลด์หนึ่งคือ id และอีกฟิลด์คือชื่อ นอกจากนี้ยังมีการสร้างบันทึกด้วยวิธีต่อไปนี้ -
ไวยากรณ์
#recordname {fieldName1 = value1, fieldName2 = value2 .. fieldNameN = valueN}
โดยที่คุณกำหนดค่าให้กับฟิลด์ตามลำดับเมื่อมีการกำหนดอินสแตนซ์ของเร็กคอร์ด
การเข้าถึงคุณค่าของบันทึก
ในการเข้าถึงฟิลด์และค่าของเรกคอร์ดหนึ่ง ๆ ควรใช้ไวยากรณ์ต่อไปนี้
ไวยากรณ์
#recordname.Fieldname
พารามิเตอร์
recordname - นี่คือชื่อที่กำหนดให้กับบันทึก
Fieldname - นี่คือชื่อของฟิลด์ที่จำเป็นต้องเข้าถึง
ส่งคืนค่า
ค่าที่กำหนดให้กับฟิลด์
ตัวอย่างเช่น
-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]).
เอาต์พุต
ผลลัพธ์ของโปรแกรมข้างต้นมีดังนี้
1
“John”
การอัปเดตค่าของระเบียน
การอัพเดตค่าเร็กคอร์ดทำได้โดยการเปลี่ยนค่าเป็นฟิลด์เฉพาะจากนั้นกำหนดเร็กคอร์ดเป็นชื่อตัวแปรใหม่ ไวยากรณ์และตัวอย่างทั่วไปได้รับด้านล่าง
ไวยากรณ์
#recordname.Fieldname = newvalue
พารามิเตอร์
recordname - นี่คือชื่อที่กำหนดให้กับบันทึก
Fieldname - นี่คือชื่อของฟิลด์ที่จำเป็นต้องเข้าถึง
newvalue - นี่คือค่าใหม่ที่ต้องกำหนดให้กับฟิลด์
ส่งคืนค่า
ระเบียนใหม่ที่มีค่าใหม่ที่กำหนดให้กับเขตข้อมูล
ตัวอย่างเช่น
-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]).
เอาต์พุต
ผลลัพธ์ของโปรแกรมข้างต้นมีดังนี้ -
1
“Dan”
ระเบียนที่ซ้อนกัน
Erlang ยังมีสิ่งอำนวยความสะดวกในการจัดทำบันทึกที่ซ้อนกัน ตัวอย่างต่อไปนี้แสดงวิธีสร้างเรกคอร์ดที่ซ้อนกันเหล่านี้
ตัวอย่างเช่น
-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]).
ในตัวอย่างข้างต้นต้องสังเกตสิ่งต่อไปนี้ -
ก่อนอื่นเราจะสร้างบันทึกของบุคคลซึ่งมีค่าฟิลด์ของชื่อและที่อยู่
จากนั้นเรากำหนดประวัติพนักงานซึ่งมีบุคคลเป็นฟิลด์และฟิลด์เพิ่มเติมที่เรียกว่า id
เอาต์พุต
ผลลัพธ์ของโปรแกรมข้างต้นมีดังนี้
1