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