辞書
ハッシュテーブルや辞書は、辞書です行動のハッシュを達成しています。キーワードモジュールは、基本的には重複するキーをサポートしていることを除いて、実装しています。
コレクションEunm.intoマッピングの1つのタイプは別のものに変換することができます。
defmodule合計は何 DEF値(辞書)を行う 辞書 > Dict.values | |> Enum.sum 端 端 HD = [1:1、2:2、3:3] |> Enum.into HashDict.new IO.puts合計。値(HD)# => 6
辞書関連のAPI
kw_list = [名: "デーブ"が好き: "プログラミング"、 "ダラス" ] hashdict = Enum.into kw_list、HashDixt.new マップ = Enum.into kw_list、Map.new kw_list [:名]# =>を」デーブ" hashdictの[:好き]# => "プログラミング" にマップ[:]# => "ダラス" hashdict = Dict.drop(hashdict、[:どこ、:好き])#=> HashDict <[名前:"デイブ"]> hashdict = Dict.put(hashdict:also_likes、"ルビー)#=> HashDict <名称: "デイブ"、also_likes: "ルビー"]> コンボ= Dict.merge(マップ、hashdict)#合并=> %{also_likes: "ルビー"は、好き:「プログラミング」、名称:「デイブ」、「ダラス」}
例:
人= [ %{名: "気難しい、高さ:1.24}、 %{名:"デイブ"高さ:1.88 }、 %{名:"まぬけ"高さ:1.32 }、 %{名:"シャキール」、高さ:2.16の}、 %{名: "sneezy"、高さ:1.28 } ] の人のために = {%高さ:高さ} < - 人、人と結合した#ハッシュテーブルのリスト、および結合高さの値の高さ 高さ > 1.5 、#選択された高さ1.5以上 の操作を行います。IO.inspect人
例2:
デフブック(%{名:名前、高さ:高さ}) の高さ> 1.9 やる ... エンド デフブック(%{名:名前、高さ:高さ}) 高さ<1.3 やる ... エンド デフブック(人)を行う ... エンド 人々 |> Enum.each(&HotelRoom.book / 1)
ハッシュテーブルを更新します。
new_map =%{old_map |キー=>値、...}、古いハッシュリストのコピーですが、右キー、パイプライン演算子対応する値で更新される新しいハッシュテーブルを作成します。
M =%{:. 1、B:2、C :. 3 }
M1 =%{M | B: "TWO"、C: "三"}#1%{:. 1、B: "TWO、C:"スリー「}
新しいキーが必要とされてDict.put_new / 3機能を追加する#
構造
構造体は、ハッシュテーブルの制限された形式をカプセル化するモジュールです。結合は、原子でなければならないので、それは限られており、ハッシュテーブルは、特性およびアクセスDictのを持っていません。ハッシュテーブルの性質を定義するdefstructを使用してください。
ハッシュテーブルは同じですが、構造は、デフォルトパラメータを持っているために使用する構造は同じです。
サブスクライバのdefmoduleを行う defstruct名: ""、有料:falseに、over_18:真の エンド S1は =%を加入者の{}#=>%を加入者の{名前: ""、over_18を:trueに:、有料falseに} S2 =%加入者{名「メアリー「有料:trueに }#=>%サブスクライバ{名:」メリー」、over_18:trueに、有料:trueに} 一致する アクセスキーでマークs2.name#ポイントアトミックである必要があり、一貫性のある特徴的な構造 %サブスクライバ{名前:a_name} = S3 a_name# => "メアリー"
更新
S3 =%加入{S2 |名 : "マリー"}
例:
defmodule出席者のない defstruct名: ""、支払った:偽、over_18:真 デフmay_attend_after_party(出席者 =%の出席者は、{})#函数参数使用%出席者{}接受结构体行い attendee.paid && attendee.over_18 終了 print_vip_badge DEF( %を出席者{名前:名})名= ""!ん IO.putsは "非常に安いバッジは#{name}のために、" 終了 デフprint_vip_bage( %の出席者{})FO 昇給 "バッジ"の名前を欠落している エンド・エンド
アクセスプロトコルは、ハッシュテーブルを実装して、あなたは[]アクセスを使用することができます。私たちは、構造体にこの機能を追加することができます。
defmodule出席者が行う @deriveアクセス defstruct名: ""、over_18:偽 端 A =%の参加者{名: "サリー"、over_18:真} [:名]# =>「サリー
ネストされた辞書構造
辞書の種類は、これらの値に関連付けられたキーと値自体はまた、辞書型であってもよいことができます。
お客様defmoduleください :defstruct名 ""、会社: "" 終了 バグ報告defmodule行う defstruct所有者:%{}、詳細: ""、Serverity :. 1 エンド レポート =%バグレポート{所有者:%お客様の{名: "デーブ"、会社を: "Pragati"}、詳細: "壊れた" } #アクセス report.owner.companyの #更新 / 変更 報告書 = {%バグ報告レポート|オーナー:%お客様report.owner {|会社: "PragProg" }} #put_inを提供することができます内部の値入れ子構造 put_in(report.owner.company、「PargProg」) #update_inは、私たちは、構造上の特定の値で機能を実行することができます update_in(report.owner.name、 &( "ミスター" <>&1))#接続 "ミスター" と名前