Erlang 記錄(Record)

Erlang具有創(chuàng)建記錄的額外功能。這些記錄由字段組成。例如,您可以定義一個(gè)個(gè)人記錄,其中包含2個(gè)字段,一個(gè)是id,另一個(gè)是name字段。然后,在Erlang中,您可以創(chuàng)建該記錄的各種實(shí)例,以定義具有不同名稱和ID的多個(gè)人。

讓我們探討如何處理記錄。

創(chuàng)建記錄

使用記錄標(biāo)識(shí)符創(chuàng)建記錄。在此記錄標(biāo)識(shí)符中,指定構(gòu)成記錄的各個(gè)字段。下面給出了一般語法和示例。

語法

record(recordname , {Field1,Field2 ..Fieldn})

參數(shù)

  • recordname ?這是記錄的名字。

  • Field1,Field2 ..Fieldn ?這些是構(gòu)成記錄的各個(gè)字段的列表。

返回值

沒有任何

例如

-module(helloworld). 
-export([start/0]). 
-record(person, {name = "", id}). 

start() -> 
   P = #person{name="John",id = 1}.

上面的示例顯示了具有2個(gè)字段的記錄的定義,一個(gè)是id,另一個(gè)是名稱。另外,記錄是通過以下方式構(gòu)造的-

語法

#recordname {fieldName1 = value1, fieldName2 = value2 .. fieldNameN = valueN}

定義記錄實(shí)例時(shí),您可以在其中將值分配給各個(gè)字段。

訪問記錄的值

要訪問特定記錄的字段和值,應(yīng)使用以下語法。

語法

#recordname.Fieldname

參數(shù)

  • 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

參數(shù)

  • 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還具有嵌套記錄的功能。下面的示例說明如何創(chuàng)建這些嵌套記錄。

例如

-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]).

在上面的示例中,需要注意以下事項(xiàng)-

  • 我們首先創(chuàng)建一個(gè)人的記錄,它的字段值為name和address。

  • 然后我們定義一個(gè)員工記錄,其中person是一個(gè)字段,另外還有一個(gè)名為id的字段。

輸出

上面程序的輸出如下。

1
丰满人妻一级特黄a大片,午夜无码免费福利一级,欧美亚洲精品在线,国产婷婷成人久久Av免费高清