- Erlang 教程
- Erlang - 首頁
- Erlang - 概述
- Erlang - 環境
- Erlang - 基本語法
- Erlang - Shell
- Erlang - 資料型別
- Erlang - 變數
- Erlang - 運算子
- Erlang - 迴圈
- Erlang - 決策
- Erlang - 函式
- Erlang - 模組
- Erlang - 遞迴
- Erlang - 數字
- Erlang - 字串
- Erlang - 列表
- Erlang - 檔案 I/O
- Erlang - 原子
- Erlang - 對映
- Erlang - 元組
- Erlang - 記錄
- Erlang - 異常
- Erlang - 宏
- Erlang - 標頭檔案
- Erlang - 預處理器
- Erlang - 模式匹配
- Erlang - 保護
- Erlang - BIFS
- Erlang - 二進位制
- Erlang - 函式
- Erlang - 程序
- Erlang - 郵件
- Erlang - 資料庫
- Erlang - 埠
- Erlang - 分散式程式設計
- Erlang - OTP
- Erlang - 併發
- Erlang - 效能
- Erlang - 驅動程式
- Erlang - Web程式設計
- Erlang 有用資源
- Erlang - 快速指南
- Erlang - 有用資源
- Erlang - 討論
Erlang - 記錄
Erlang 提供了建立記錄的額外功能。這些記錄由欄位組成。例如,您可以定義一個包含兩個欄位的個人記錄,一個是 ID 欄位,另一個是姓名欄位。在 Erlang 中,您可以建立此記錄的各種例項來定義具有不同姓名和 ID 的多個人。
讓我們探討如何使用記錄。
建立記錄
記錄是使用記錄識別符號建立的。在此記錄識別符號中,您指定構成記錄的各個欄位。下面給出一般語法和示例。
語法
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}.
上面的示例顯示了具有兩個欄位的記錄的定義,一個是 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
廣告