Erlang 記錄

2022-07-07 15:45 更新

Erlang記錄

記錄的定義如下:

-record(name_of_record,{field_name1, field_name2, field_name3, ......}).

例如,

-record(message_to,{to_name, message}).

這等價(jià)于:

{message_to, To_Name, Message}

用一個(gè)例子來(lái)說(shuō)明怎樣創(chuàng)建一個(gè)記錄:

#message_to{message="hello", to_name=fred)

上面的代碼創(chuàng)建了如下的記錄:

{message_to, fred, "hello"}

注意,使用這種方式創(chuàng)建記錄時(shí),你不需要考慮給每個(gè)部分賦值時(shí)的順序問(wèn)題。這樣做的另外一個(gè)優(yōu)勢(shì)在于你可以把接口一并定義在頭文件中,這樣修改接口會(huì)變得非常容易。例如,如果你想在記錄中添加一個(gè)新的域,你只需要在使用該新域的地方進(jìn)行修改就可以了,而不需要在每個(gè)使用記錄的地方都進(jìn)行修改。如果你在創(chuàng)建記錄時(shí)漏掉了其中的某些域,則這些域會(huì)得到一個(gè)默認(rèn)的原子值 undefined。

使用記錄進(jìn)行模式匹配與創(chuàng)建記錄是一樣。例如,在 receive 的 case 中:

#message_to{to_name=ToName, message=Message} ->

這與下面的代碼是一樣的:

{message_to, ToName, Message}
以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)