Elm-records
提供:Dev Guides
エルム-レコード
Elmのレコードデータ構造を使用して、データをキーと値のペアとして表すことができます。 レコードを使用して関連データを整理し、簡単にアクセスしてデータを更新できるようにします。 ElmレコードはJavaScriptのオブジェクトに似ています。 レコード内のデータ要素はフィールドと呼ばれます。
レコードを定義する
レコードを定義するには、次の構文を使用します-
構文
record_name = {fieldname1 = value1, fieldname2 = value2....fieldnameN = valueN}
レコードには、複数のタイプのデータを保存できます。 レコード内のフィールド名は、Elm識別子の命名に関する一般的な規則に準拠する必要があります。
レコード値へのアクセス
次の構文を使用して、レコード内の個々のフィールドにアクセスします。
構文
record_name.fieldname
OR
.fieldname record_name
図
Elm REPLで以下を試してください-
> company = {name="finddevguides",rating=4.5}
{ name = "finddevguides", rating = 4.5 } : { name : String, rating : Float }
> company.name
"finddevguides" : String
> .rating company
4.5 : Float
リストでレコードを使用する
レコードはリスト内に保存できます。 レコードのすべてのフィールド値は同じタイプである必要があります。
構文
list_name = [ {field_name1 = value1},{field_name1 = value2}]
OR
list_name = [record_name1, record_name2, record_name3....record_nameN]
図
Elm REPLで以下を試してください-
> [{name = "Mohtashim"},{name = "kannan"}]
[{ name = "Mohtashim" },{ name = "kannan" }] : List { name : String }
> record1 = {name = "FirstRecord"}
{ name = "FirstRecord" } : { name : String }
> record2 = {name = "SecondRecord"}
{ name = "SecondRecord" } : { name : String }
> recordList = [record1,record2]
[{ name = "FirstRecord" },{ name = "SecondRecord" }] : List { name : String }
レコードを更新する
Elmではレコードは不変です。 レコードが更新されると、更新された値を持つ新しいレコードが返されます。 このフィールドは、レコードを更新するときに異なるタイプの値を保持できます。
構文
{record_name | field_name1 = new_value1, field_name2 = new_value2,field_name3 = new_value3....field_nameN = new_valueN}
図
Elm REPLで以下を試してください-
> record1 = {name="FirstRecord"}
{ name = "FirstRecord" } : { name : String }
> record1_updated = {record1 | name = "FirstRecordUpdate"}
{ name = "FirstRecordUpdate" } : { name : String }
> record1
{ name = "FirstRecord" } : { name : String }
> record1 == record1_updated
False : Bool
図
次の例は、レコードの複数のフィールドを更新します。 Elm REPLで以下を試してください-
> record3 = {a = 1,b = 2,c = 3,d = 4,e = 5}
{ a = 1, b = 2, c = 3, d = 4, e = 5 }
: { a : number, b : number1, c : number2, d : number3, e : number4 }
> record4 = {record3 | d=400 ,e=500}
{ a = 1, b = 2, c = 3, d = 400, e = 500 }
: { a : number2, b : number3, c : number4, d : number, e : number1 }
>
型エイリアス
型エイリアスは、レコードのスキーマを定義します。 つまり、タイプエイリアスは、レコードが保存できるフィールドと、これらのフィールドが保存できる値のタイプを定義します。 したがって、プログラマーは、値を割り当てる際に特定の属性を見逃すことはありません。
構文
type alias alias_name = {field_name1:data_type,field_name2:data_type,....field_nameN:data_type}
図
Elm REPLで以下を実行します-
> type alias Developer = { name:String,location:String,age:Int}
> dev1 = Developer "kannan" "Mumbai" 20
{ name = "kannan", location = "Mumbai", age = 20 } : Repl.Developer
> dev2 = Developer "mohtashim" "hyderabad" 20
{ name = "mohtashim", location = "hyderabad", age = 20 } : Repl.Developer
>
ここで、場所と年齢を入力するのを忘れた場合、ステートメントは場所と年齢のフィールドの入力パラメーターを持つ関数を返します。
> dev3 = Developer "Bhagavati"
<function> : String -> Int -> Repl.Developer
We can invoke the function as shown below and pass to it the values for location and age fields.
> dev3 "Pune" 25
{ name = "Bhagavati", location = "Pune", age = 25 } : Repl.Developer